From patchwork Thu Oct 13 04:41:48 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zqiang X-Patchwork-Id: 13005606 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id E6F06C4332F for ; Thu, 13 Oct 2022 04:35:53 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229544AbiJMEfw (ORCPT ); Thu, 13 Oct 2022 00:35:52 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48508 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229484AbiJMEfe (ORCPT ); Thu, 13 Oct 2022 00:35:34 -0400 Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D0615D57D0; Wed, 12 Oct 2022 21:35:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1665635732; x=1697171732; h=from:to:cc:subject:date:message-id:mime-version: content-transfer-encoding; bh=iVsDzfKMrTf4dOi/qkyEwaNKYWbENXdJdKPUtuIzQvE=; b=hhn2Jf2HyaR/4HE/fo+5JiOajosAQFWYcfyH8hig+bKjB5JK31iZSwJY ONLa/ZAcpqY9deAmbhDEC8Sli7iezC0qaAu3y7WrH+vkjlbbzhNEJGmxB iAIftNoc6d2hNP0Roa4rJ5qk9aYJjYMt6vOAGbvm/VmA12+izmX2+lIQa PnStjxb2pALjV9AOze0y49DMIaCFX3Bk6H6obpFCLx/shTb4L2D9BOTVm j2k9Pv/UwFDiHH+lz6amUvaKcy/kruPC9eFbGmiYX6opoPvRO69P5Dwfx bm6KwyI5+aB26NtfJBSkgy3WDI6ZzHYel1vj71L47Wjf8wOhB71OF5Itj g==; X-IronPort-AV: E=McAfee;i="6500,9779,10498"; a="306036833" X-IronPort-AV: E=Sophos;i="5.95,180,1661842800"; d="scan'208";a="306036833" Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by orsmga102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 Oct 2022 21:35:30 -0700 X-IronPort-AV: E=McAfee;i="6500,9779,10498"; a="629371535" X-IronPort-AV: E=Sophos;i="5.95,180,1661842800"; d="scan'208";a="629371535" Received: from zq-optiplex-7090.bj.intel.com ([10.238.156.129]) by fmsmga007-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 Oct 2022 21:35:28 -0700 From: Zqiang To: paulmck@kernel.org, frederic@kernel.org, quic_neeraju@quicinc.com, joel@joelfernandes.org Cc: rcu@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH] rcu: Fix use __this_cpu_read() warning in preemptible code Date: Thu, 13 Oct 2022 12:41:48 +0800 Message-Id: <20221013044148.2894320-1-qiang1.zhang@intel.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: rcu@vger.kernel.org BUG: using __this_cpu_read() in preemptible [00000000] code: rcu_torture_fqs/398 caller is __this_cpu_preempt_check+0x13/0x20 CPU: 3 PID: 398 Comm: rcu_torture_fqs Not tainted 6.0.0-rc1-yoctodev-standard+ Call Trace: dump_stack_lvl+0x5b/0x86 dump_stack+0x10/0x16 check_preemption_disabled+0xe5/0xf0 __this_cpu_preempt_check+0x13/0x20 rcu_force_quiescent_state.part.0+0x1c/0x170 rcu_force_quiescent_state+0x1e/0x30 rcu_torture_fqs+0xca/0x160 ? rcu_torture_boost+0x430/0x430 kthread+0x192/0x1d0 ? kthread_complete_and_exit+0x30/0x30 ret_from_fork+0x22/0x30 When enable rcutorture.fqs_duration, the rcu_force_quiescent_state() be invoked in rcu_torture_fqs task context, invoke __this_cpu_read() in preemptible code section will trigger the above calltrace. This commit convert __this_cpu_read() to raw_cpu_read() to avoid this warning. Signed-off-by: Zqiang Reviewed-by: Joel Fernandes (Google) --- kernel/rcu/tree.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c index 96d678c9cfb6..282002e62cf3 100644 --- a/kernel/rcu/tree.c +++ b/kernel/rcu/tree.c @@ -2436,7 +2436,7 @@ void rcu_force_quiescent_state(void) struct rcu_node *rnp_old = NULL; /* Funnel through hierarchy to reduce memory contention. */ - rnp = __this_cpu_read(rcu_data.mynode); + rnp = raw_cpu_read(rcu_data.mynode); for (; rnp != NULL; rnp = rnp->parent) { ret = (READ_ONCE(rcu_state.gp_flags) & RCU_GP_FLAG_FQS) || !raw_spin_trylock(&rnp->fqslock);