Received: by 10.223.164.202 with SMTP id h10csp4901859wrb; Tue, 21 Nov 2017 01:22:54 -0800 (PST) X-Google-Smtp-Source: AGs4zMbL1ecVXTi6vfJgpCG1HNJMa7dzHraxmDHreRwqf7O0G/cClR+NM4/TmE+4cdIotkpwpTCR X-Received: by 10.84.240.204 with SMTP id l12mr16793396plt.211.1511256174732; Tue, 21 Nov 2017 01:22:54 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1511256174; cv=none; d=google.com; s=arc-20160816; b=Y38dEbRV8VwyWfg+wgUpA423IViOqbKXezb2O95uaXsXVbrNpAlJgboyEaFYTpmIxK q5OJOtdicbJw0OijXQ0jlqDyLAtr2qTL8SRVZNuOL3Rzqiv3/XeZ0CIQH3woBbdlKL5c Sf0PdeCxW4A02uYk8Fzy8jgSXdRKZy0chvGr7jjbD8YxkzubtrXiZJIH28vV+FZ45UmK z3hn+E7ZySNKeM5kcwwOrZGurv1TK3TfbXmQtjqWITmjjvTBQRUuT23YcMRpd1YPVOeo VM6ifBVePLW/aUYuORTkl89VlXhNJilNhf5ohZVRgR/s4UVqORFNu9MYMguGzNCEwRJd yduw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :references:in-reply-to:mime-version:dkim-signature :arc-authentication-results; bh=Dj+E2Z+ufCmLcgOMyeXBeAlVEx5ZbaMUTkxt9IiHtPw=; b=dW0wZI9IMDl1+6JXyGMF6fXjsviStPw3yBy8nhWepvLW3l2v5rdQECYCg0nTgRaVWZ grkSIYqSaUBHnAHtsZQA1cC0he3BTwVUM/EeK1xpCUufHYGVG4bMb+qci1qQtzHZxwoG 9VJ9nc2XHcAfGrxIYlZOg8MbQE/9gj4WKQ8OtNeXxtZHlvyHF/pzQ11TAAckYHuTQO89 pugPH86PpNn9fW23XCJug05l0Iv/O6t6fLr2iO3jejiciInjTSu0hReN76MBy+5jtePN SGqc9pFHmYn27YKg3EXLbnIQuP81Ijy8XTHhZk/hPDOBpRK4T64EZNbDYieXX0WVPEyI bUrg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=PpHQ0vvL; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id e68si10280510pgc.143.2017.11.21.01.22.43; Tue, 21 Nov 2017 01:22:54 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=PpHQ0vvL; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751317AbdKUJWG (ORCPT + 72 others); Tue, 21 Nov 2017 04:22:06 -0500 Received: from mail-lf0-f68.google.com ([209.85.215.68]:39738 "EHLO mail-lf0-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751184AbdKUJWD (ORCPT ); Tue, 21 Nov 2017 04:22:03 -0500 Received: by mail-lf0-f68.google.com with SMTP id x76so8635344lfb.6; Tue, 21 Nov 2017 01:22:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=Dj+E2Z+ufCmLcgOMyeXBeAlVEx5ZbaMUTkxt9IiHtPw=; b=PpHQ0vvLsykpABWZlS6N6Zdjf+D94UzhA6w5Kxj4n4OmP4RN8GN6sgdAcG3VgodlGg sD59SBz1ETWGUdZF1jrpfAfLAR490lvt4mvomIjB4ztmehCRxy/J7CO7P1+U7mEp/BV0 mloOxQV5vpj4EbpZx0nLDXRfAg/l+2CCdXx8pnBUCI2AFaYdxVxrE7VHu7zH+4JE+ybp 8iemhkoQ/TjSexmGvl0NfQGM9eh+qlHNWQk6mgGI82F9JWYroTKGL2NUc0uUOVXpAaVC 3iEJ/HNvvrpW+rST34xelxHYEvgtlhAgFScJiwIJr9UpupPtq2CXIJsAyp329qdLcx4R iFhQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=Dj+E2Z+ufCmLcgOMyeXBeAlVEx5ZbaMUTkxt9IiHtPw=; b=EU5SvBMDCIGvxLWl/PW0xb5U50VCB4La1O9QA/h2j0wTIMMTcJSnQpgpfEldCpZ5Wz zgatw/bRmurj8hwcQnrBSxmuRcmtZrs5QqNMRI/b/b4pSCz0j/6W9EGLboRtDNeM3AVL 3/TFioGQsuQ2PE8ZkLeltKLAPOLGMbbKLR/9fefDnpQg93z3XCbHF9hvmkOOGbQsovfo QnVrNN9HAWZcx7aJ+a5rUDzxhPxg0G6+0jfwY9zoya2Wo5zzh2g5nePDMyMf9UdG5jyr KJlDjq66Br6mFtlBlliT+wticCzTA6izgT6fZJrMp9dWOM0parbh2T0gwepwUCw4iCm/ yNEg== X-Gm-Message-State: AJaThX783U56xZLak4pl6tvv/mgbr3C30mVPQgWlsnewdxwtZWWiGHfV VESoiaieBQU+RpXu5qC020rOrvTpEIAkZDhto3dMjQ== X-Received: by 10.46.81.74 with SMTP id b10mr4901499lje.98.1511256121649; Tue, 21 Nov 2017 01:22:01 -0800 (PST) MIME-Version: 1.0 Received: by 10.179.65.132 with HTTP; Tue, 21 Nov 2017 01:21:21 -0800 (PST) In-Reply-To: References: <20171120033816.28414-1-chunyan.zhang@spreadtrum.com> <20171120191219.GD18379@codeaurora.org> From: Chunyan Zhang Date: Tue, 21 Nov 2017 17:21:21 +0800 Message-ID: Subject: Re: [PATCH] clk: fix a panic error caused by accessing NULL pointer To: Stephen Boyd Cc: Chunyan Zhang , Michael Turquette , linux-clk , "linux-kernel@vger.kernel.org" , Cai Li , Orson Zhai Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 21 November 2017 at 16:57, Chunyan Zhang wrote: > On 21 November 2017 at 03:12, Stephen Boyd wrote: >> On 11/20, Chunyan Zhang wrote: >>> From: Cai Li >>> >>> In some cases the clock parent would be set NULL when doing re-parent, >>> it will cause a NULL pointer accessing if clk_set trace event is enabled, >>> since the trace event function would not check the input parameter. >>> >>> Signed-off-by: Cai Li >>> Signed-off-by: Chunyan Zhang >> >> Fixes: tag? >> >>> --- >>> drivers/clk/clk.c | 9 ++++----- >>> 1 file changed, 4 insertions(+), 5 deletions(-) >>> >>> diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c >>> index c8d83ac..64efaf0 100644 >>> --- a/drivers/clk/clk.c >>> +++ b/drivers/clk/clk.c >>> @@ -1242,13 +1242,12 @@ static int __clk_set_parent(struct clk_core *core, struct clk_core *parent, >>> >>> old_parent = __clk_set_parent_before(core, parent); >>> >>> - trace_clk_set_parent(core, parent); >>> - >>> /* change clock input source */ >>> - if (parent && core->ops->set_parent) >>> + if (parent && core->ops->set_parent) { >>> + trace_clk_set_parent(core, parent); >>> ret = core->ops->set_parent(core->hw, p_index); >>> - >>> - trace_clk_set_parent_complete(core, parent); >>> + trace_clk_set_parent_complete(core, parent); >>> + } >> >> Is the problem that parent may be NULL and the tracepoint >> dereferences it? > > Yes, I think that probably is uncommon usage though, it revealed that > the tracepoint could be stronger :) The reason we need to set the parent as NULL is to disable the clk for the purpose of saving power. > >> Perhaps we need to update the tracepoint code >> instead so that we always see that the tracepoint is called even >> if we don't actually touch the hardware. Something like the patch >> below instead. > > Ok, we will cook a new patch according to your comments. > > Thanks, > Chunyan > >> >> ---8<---- >> diff --git a/include/trace/events/clk.h b/include/trace/events/clk.h >> index 758607226bfd..5a85ea2090c4 100644 >> --- a/include/trace/events/clk.h >> +++ b/include/trace/events/clk.h >> @@ -139,7 +139,7 @@ DECLARE_EVENT_CLASS(clk_parent, >> >> TP_fast_assign( >> __assign_str(name, core->name); >> - __assign_str(pname, parent->name); >> + __assign_str(pname, parent ? parent->name : NULL); >> ), >> >> TP_printk("%s %s", __get_str(name), __get_str(pname)) >> -- >> Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, >> a Linux Foundation Collaborative Project From 1584665541230328211@xxx Tue Nov 21 09:00:26 +0000 2017 X-GM-THRID: 1584555218460383528 X-Gmail-Labels: Inbox,Category Forums,HistoricalUnread