Received: by 2002:a25:1506:0:0:0:0:0 with SMTP id 6csp139212ybv; Wed, 5 Feb 2020 02:52:31 -0800 (PST) X-Google-Smtp-Source: APXvYqwBqK/4QdvLTjEwPUcGRdeNUq/3we50dcdfPBZ8PfU0ZOVNK5Qz+yTxv+T5pmyeyftT/7id X-Received: by 2002:a05:6808:a9c:: with SMTP id q28mr2437024oij.176.1580899951416; Wed, 05 Feb 2020 02:52:31 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1580899951; cv=none; d=google.com; s=arc-20160816; b=VRHIpouhiBzkKXktzXWgxyi5U6cdu3GTH4+EeU4pVIMs+7xfA9n7G/sv/ioxqlr/aj Ar2rE+lE3BNnt/HmEvjfAF+8ya5cxmmJ8guoMLsGfzuhYW4Skh42NW4Llpj4wanNilSl xXQAEtUqu6UDshx1wq1IdfRb/siMuEz+rc+2OZ7bbWy+5tlQM8ZZh7aJI3nBofPo8mDu fOzui3+oRNlOv7tATIHXl4gbczGQoq2B5sWgcuB/axFIHas00ng8dOJJZ2n6haZWh86n VtYhXeOeCLiQu1TGZKK/9OQS3fp8gQXp2sCUCuYrWg1m/bWPiVStw7wrNj9sYiXIq5Sf zXAQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:references:subject:cc:to :from:date:user-agent:message-id; bh=9l0aJvLYPcokRnCTl4Tyhzd4oqMq0BJ0K80JXg9TBwg=; b=fNTKknbaoPvYJ2+4D3TWHXjPoGYEAuxf/UOqjhTo7TA3KTJuwZ6+CXPHcmdR5GPPr1 5WcNRm/isi0Jx0QXW4CEjhf8b3cLXo5a5S5eFPTnf0GH6hRKyhQiqne/1ivw/vB0PGBP S+tgFZ1U/LcaC4OdIEOO8Ne5ozYSSB0H+yLxBl7Aur9qDufVUHxm4CBpCqQDHGTRinqG FEIzSyqfmzEMKj/zUeuc2917LWP0cNuPBo0txsw3z2vhcHCvygMkwRYWzOIyNHG/HvNd AOxfPMXwwpqcCZ+seGGQz7vC6YkZlAZPI56EG7gleI7TnvOvdA8O9DKG76W/ajQiBo6H 08YQ== ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id x16si12700204otp.184.2020.02.05.02.52.19; Wed, 05 Feb 2020 02:52:31 -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; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728343AbgBEKvQ (ORCPT + 99 others); Wed, 5 Feb 2020 05:51:16 -0500 Received: from mail.kernel.org ([198.145.29.99]:59494 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728244AbgBEKvO (ORCPT ); Wed, 5 Feb 2020 05:51:14 -0500 Received: from gandalf.local.home (cpe-66-24-58-225.stny.res.rr.com [66.24.58.225]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 79ADD222C2; Wed, 5 Feb 2020 10:51:14 +0000 (UTC) Received: from rostedt by gandalf.local.home with local (Exim 4.93) (envelope-from ) id 1izIH3-001NtT-Co; Wed, 05 Feb 2020 05:51:13 -0500 Message-Id: <20200205105113.283672584@goodmis.org> User-Agent: quilt/0.65 Date: Wed, 05 Feb 2020 05:49:33 -0500 From: Steven Rostedt To: linux-kernel@vger.kernel.org Cc: Ingo Molnar , Andrew Morton Subject: [for-next][PATCH 4/4] ftrace: Add comment to why rcu_dereference_sched() is open coded References: <20200205104929.313040579@goodmis.org> MIME-Version: 1.0 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 From: "Steven Rostedt (VMware)" Because the function graph tracer can execute in sections where RCU is not "watching", the rcu_dereference_sched() for the has needs to be open coded. This is fine because the RCU "flavor" of the ftrace hash is protected by its own RCU handling (it does its own little synchronization on every CPU and does not rely on RCU sched). Signed-off-by: Steven Rostedt (VMware) --- kernel/trace/trace.h | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/kernel/trace/trace.h b/kernel/trace/trace.h index 022def96d307..8c52f5de9384 100644 --- a/kernel/trace/trace.h +++ b/kernel/trace/trace.h @@ -975,6 +975,11 @@ static inline int ftrace_graph_addr(struct ftrace_graph_ent *trace) preempt_disable_notrace(); + /* + * Have to open code "rcu_dereference_sched()" because the + * function graph tracer can be called when RCU is not + * "watching". + */ hash = rcu_dereference_protected(ftrace_graph_hash, !preemptible()); if (ftrace_hash_empty(hash)) { @@ -1022,6 +1027,11 @@ static inline int ftrace_graph_notrace_addr(unsigned long addr) preempt_disable_notrace(); + /* + * Have to open code "rcu_dereference_sched()" because the + * function graph tracer can be called when RCU is not + * "watching". + */ notrace_hash = rcu_dereference_protected(ftrace_graph_notrace_hash, !preemptible()); -- 2.24.1