From patchwork Thu Aug 30 18:56:23 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Paul E. McKenney" X-Patchwork-Id: 11102 Return-Path: X-Original-To: patchwork@peony.canonical.com Delivered-To: patchwork@peony.canonical.com Received: from fiordland.canonical.com (fiordland.canonical.com [91.189.94.145]) by peony.canonical.com (Postfix) with ESMTP id D8AC123F27 for ; Thu, 30 Aug 2012 21:43:42 +0000 (UTC) Received: from mail-iy0-f180.google.com (mail-iy0-f180.google.com [209.85.210.180]) by fiordland.canonical.com (Postfix) with ESMTP id 005BEA19300 for ; Thu, 30 Aug 2012 21:43:04 +0000 (UTC) Received: by mail-iy0-f180.google.com with SMTP id j25so3726580iaf.11 for ; Thu, 30 Aug 2012 14:43:41 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=x-forwarded-to:x-forwarded-for:delivered-to:received-spf:from:to:cc :subject:date:message-id:x-mailer:in-reply-to:references :x-content-scanned:x-cbid:x-gm-message-state; bh=99xWxwAe3YgY0zk1oczIJgO6Wvd9J7QAkQaLQgBWxEc=; b=gEoeWkqbPCIst0x2DOm8Wdgnb3AMZdlFPq+MUSyktpQCMzp6GPrXd15Cvik+PSZ4MN bVdf3NrpZ+Yj1Fb1g5RU9lswII82feG5xUJs9JCd6chgoZzPTQz74Gx65U7D1SM5bXlg LUTnni5EVSyKGXF2/nKFHptZgDgvVsME7bB7Y+JKLVa8YnyrjzKQ+ygwTeSkZ4Q0U1CC /kHpU1tT+I6STbAwksu2EwHnLobU2SjzS8oUgrev8oLZQubq8lk42vLLIMVZw6NX30o4 ik/C97e22htA4yz5H68xIVoG6LMpcImIeA69EGnpJuYyTSsWBc7DE8BL6Qkrkx1gCJuI 7UQA== Received: by 10.50.10.201 with SMTP id k9mr2524192igb.28.1346363021112; Thu, 30 Aug 2012 14:43:41 -0700 (PDT) X-Forwarded-To: linaro-patchwork@canonical.com X-Forwarded-For: patch@linaro.org linaro-patchwork@canonical.com Delivered-To: patches@linaro.org Received: by 10.50.184.232 with SMTP id ex8csp32859igc; Thu, 30 Aug 2012 14:43:40 -0700 (PDT) Received: by 10.50.154.225 with SMTP id vr1mr2330433igb.70.1346363019823; Thu, 30 Aug 2012 14:43:39 -0700 (PDT) Received: from e36.co.us.ibm.com (e36.co.us.ibm.com. [32.97.110.154]) by mx.google.com with ESMTPS id z2si2684647igk.46.2012.08.30.14.43.39 (version=TLSv1/SSLv3 cipher=OTHER); Thu, 30 Aug 2012 14:43:39 -0700 (PDT) Received-SPF: pass (google.com: domain of paulmck@linux.vnet.ibm.com designates 32.97.110.154 as permitted sender) client-ip=32.97.110.154; Authentication-Results: mx.google.com; spf=pass (google.com: domain of paulmck@linux.vnet.ibm.com designates 32.97.110.154 as permitted sender) smtp.mail=paulmck@linux.vnet.ibm.com Received: from /spool/local by e36.co.us.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Thu, 30 Aug 2012 15:43:39 -0600 Received: from d03dlp02.boulder.ibm.com (9.17.202.178) by e36.co.us.ibm.com (192.168.1.136) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; Thu, 30 Aug 2012 15:43:38 -0600 Received: from d03relay04.boulder.ibm.com (d03relay04.boulder.ibm.com [9.17.195.106]) by d03dlp02.boulder.ibm.com (Postfix) with ESMTP id 9B2AF3E4004E for ; Thu, 30 Aug 2012 15:43:36 -0600 (MDT) Received: from d03av01.boulder.ibm.com (d03av01.boulder.ibm.com [9.17.195.167]) by d03relay04.boulder.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id q7ULhZWG146790 for ; Thu, 30 Aug 2012 15:43:35 -0600 Received: from d03av01.boulder.ibm.com (loopback [127.0.0.1]) by d03av01.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id q7ULhXX1026382 for ; Thu, 30 Aug 2012 15:43:34 -0600 Received: from paulmck-ThinkPad-W500 (sig-9-65-153-225.mts.ibm.com [9.65.153.225]) by d03av01.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id q7ULhWG6026341; Thu, 30 Aug 2012 15:43:33 -0600 Received: by paulmck-ThinkPad-W500 (Postfix, from userid 1000) id 52DFBEA831; Thu, 30 Aug 2012 11:56:31 -0700 (PDT) From: "Paul E. McKenney" To: linux-kernel@vger.kernel.org Cc: mingo@elte.hu, laijs@cn.fujitsu.com, dipankar@in.ibm.com, akpm@linux-foundation.org, mathieu.desnoyers@polymtl.ca, josh@joshtriplett.org, niv@us.ibm.com, tglx@linutronix.de, peterz@infradead.org, rostedt@goodmis.org, Valdis.Kletnieks@vt.edu, dhowells@redhat.com, eric.dumazet@gmail.com, darren@dvhart.com, fweisbec@gmail.com, sbw@mit.edu, patches@linaro.org, "Paul E. McKenney" Subject: [PATCH tip/core/rcu 10/15] rcu: Protect rcu_node accesses during CPU stall warnings Date: Thu, 30 Aug 2012 11:56:23 -0700 Message-Id: <1346352988-32444-10-git-send-email-paulmck@linux.vnet.ibm.com> X-Mailer: git-send-email 1.7.8 In-Reply-To: <1346352988-32444-1-git-send-email-paulmck@linux.vnet.ibm.com> References: <20120830185607.GA32148@linux.vnet.ibm.com> <1346352988-32444-1-git-send-email-paulmck@linux.vnet.ibm.com> X-Content-Scanned: Fidelis XPS MAILER x-cbid: 12083021-7606-0000-0000-00000334FF70 X-Gm-Message-State: ALoCoQkJwWre6mN3NQNn++lQ37pTZfMnP94SqB7nbgjDPE7pgauFdyiYjy1FLrAI4DwdAZEUnUAY From: "Paul E. McKenney" The print_other_cpu_stall() function accesses a number of rcu_node fields without protection from the ->lock. In theory, this is not a problem because the fields accessed are all integers, but in practice the compiler can get nasty. Therefore, the commit extends the existing critical section to cover the entire loop body. Signed-off-by: Paul E. McKenney --- kernel/rcutree.c | 6 ++++-- 1 files changed, 4 insertions(+), 2 deletions(-) diff --git a/kernel/rcutree.c b/kernel/rcutree.c index 9f44749..fbe43b0 100644 --- a/kernel/rcutree.c +++ b/kernel/rcutree.c @@ -746,14 +746,16 @@ static void print_other_cpu_stall(struct rcu_state *rsp) rcu_for_each_leaf_node(rsp, rnp) { raw_spin_lock_irqsave(&rnp->lock, flags); ndetected += rcu_print_task_stall(rnp); - raw_spin_unlock_irqrestore(&rnp->lock, flags); - if (rnp->qsmask == 0) + if (rnp->qsmask == 0) { + raw_spin_unlock_irqrestore(&rnp->lock, flags); continue; + } for (cpu = 0; cpu <= rnp->grphi - rnp->grplo; cpu++) if (rnp->qsmask & (1UL << cpu)) { print_cpu_stall_info(rsp, rnp->grplo + cpu); ndetected++; } + raw_spin_unlock_irqrestore(&rnp->lock, flags); } /*