Received: by 2002:a05:6a10:1287:0:0:0:0 with SMTP id d7csp5773955pxv; Wed, 21 Jul 2021 13:47:44 -0700 (PDT) X-Google-Smtp-Source: ABdhPJy0iRreGpdpWcb7TwjfahBgIhfKdgbzHI/jar5QJ90/zjelPyEx2vLaNka8+ES1UaMudPyb X-Received: by 2002:aa7:c043:: with SMTP id k3mr49103523edo.160.1626900463939; Wed, 21 Jul 2021 13:47:43 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1626900463; cv=none; d=google.com; s=arc-20160816; b=qyIOG40jCO5XKEi/Ht7yaZrTDJ8wI/6F5WVijvHPIshV7klsHqiF8H2iPGlZPuyDFR ApZFNvA8i9rt8EHupx4ZxfB3s21n/ZtF9EXeT6JqwkyIDZR4507cNsUv2ptqZQuWlshs /cMAUP/NL1JHqhsDiMCaIQH7geIkMQLAkApD0JX49a2mzG2i++TrE7AnJLTBY6QLdVh5 Nxy7b96/qmtSu39ss1aFLvv77rPJGJ2/M2VbcXTFG32ee4h+1vfpdHnS38DCZH+s09CK JnSEttwF1LZ1ZFsWaYZhf6S1anpK7o3GzsTIWWL4QOIFftgWuG33pzwCdXnZtslvCosg lHTg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=Sa2YEMRuEPxwTIXosMgBdqy2CT73xiu9+5QuQCHRBB0=; b=aFodsRdTzA8WRAkT68ZI6b3xvx1wCdOdvuJeTZywVp1UpSQqT/WnjcBtbT1FVee4IK 0TMWHh4Y4BFaDevTHbCPv1Fx/AR09Fb6E9Hyd3JpNLaFqrzY+VXUc/hfxraZZiTwR9/f MQLChvc3hY0LaAPU49S0YBhmSUQEYgRZwa8eGCyujQL5zCg2hTRYOM9lhDMKOmRqjXj0 cgxvtMyDJmB0mckrsQbLJ/cXBl8iLowqWYJC9Uww2SU4W6bhdyT/BNPtLNw7uZ53eSJi zG1L6iJ9uiSty1KdDsKGUGVy6lJmWD22zf9Mfw2/OVL3GDHKyEfq8Qa5M/ahE/gvIx+C oDCg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=fbgf4hRx; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id b3si26234033ejb.219.2021.07.21.13.47.14; Wed, 21 Jul 2021 13:47:43 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=fbgf4hRx; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S240412AbhGUTk4 (ORCPT + 99 others); Wed, 21 Jul 2021 15:40:56 -0400 Received: from mail.kernel.org ([198.145.29.99]:49888 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229927AbhGUTkx (ORCPT ); Wed, 21 Jul 2021 15:40:53 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 4FDCA6124B; Wed, 21 Jul 2021 20:21:29 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1626898889; bh=CDG/Ffh6JXlYsOb6vAJ1rFVJxEpimCt7Bmo04hXqOt8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=fbgf4hRxIdliPAydwHvUxdCsrE/K67szEHFiat49kIh5T6FFTfa71qbz0qYO2EThN Gv4M6Jl5nXHa6icvpmDinEB4hsKG6nJzoqRUsufaawZ5t0qBQVuNUD2zAclSaVfBRe b7ZR63siNRPG7UcnJk4lbtko9wO50fivhrQvobTZahTM4hpNaIQCrH+lwC98maXTDi BvL+cXY0OGd7zv8ekgXHirev1z6JlL+ja9+rsUow9qCEKrCnfRjIx2x7po8UUjLvz9 qQOHPxozoM6Ty20NpLaoqtzBJpHrkUm16o67gYqquMXni0jtdD5Psp5dX72/MXS1c3 ic0w8ICDthXNQ== Received: by paulmck-ThinkPad-P17-Gen-1.home (Postfix, from userid 1000) id 0D9605C09A4; Wed, 21 Jul 2021 13:21:29 -0700 (PDT) From: "Paul E. McKenney" To: rcu@vger.kernel.org Cc: linux-kernel@vger.kernel.org, kernel-team@fb.com, mingo@kernel.org, jiangshanlai@gmail.com, akpm@linux-foundation.org, mathieu.desnoyers@efficios.com, josh@joshtriplett.org, tglx@linutronix.de, peterz@infradead.org, rostedt@goodmis.org, dhowells@redhat.com, edumazet@google.com, fweisbec@gmail.com, oleg@redhat.com, joel@joelfernandes.org, Yanfei Xu , "Paul E . McKenney" Subject: [PATCH rcu 01/18] rcu: Fix to include first blocked task in stall warning Date: Wed, 21 Jul 2021 13:21:09 -0700 Message-Id: <20210721202127.2129660-1-paulmck@kernel.org> X-Mailer: git-send-email 2.31.1.189.g2e36527f23 In-Reply-To: <20210721202042.GA1472052@paulmck-ThinkPad-P17-Gen-1> References: <20210721202042.GA1472052@paulmck-ThinkPad-P17-Gen-1> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Yanfei Xu The for loop in rcu_print_task_stall() always omits ts[0], which points to the first task blocking the stalled grace period. This in turn fails to count this first task, which means that ndetected will be equal to zero when all CPUs have passed through their quiescent states and only one task is blocking the stalled grace period. This zero value for ndetected will in turn result in an incorrect "All QSes seen" message: rcu: INFO: rcu_preempt detected stalls on CPUs/tasks: rcu: Tasks blocked on level-1 rcu_node (CPUs 12-23): (detected by 15, t=6504 jiffies, g=164777, q=9011209) rcu: All QSes seen, last rcu_preempt kthread activity 1 (4295252379-4295252378), jiffies_till_next_fqs=1, root ->qsmask 0x2 BUG: sleeping function called from invalid context at include/linux/uaccess.h:156 in_atomic(): 1, irqs_disabled(): 0, non_block: 0, pid: 70613, name: msgstress04 INFO: lockdep is turned off. Preemption disabled at: [] create_object.isra.0+0x204/0x4b0 CPU: 15 PID: 70613 Comm: msgstress04 Kdump: loaded Not tainted 5.12.2-yoctodev-standard #1 Hardware name: Marvell OcteonTX CN96XX board (DT) Call trace: dump_backtrace+0x0/0x2cc show_stack+0x24/0x30 dump_stack+0x110/0x188 ___might_sleep+0x214/0x2d0 __might_sleep+0x7c/0xe0 This commit therefore fixes the loop to include ts[0]. Fixes: c583bcb8f5ed ("rcu: Don't invoke try_invoke_on_locked_down_task() with irqs disabled") Signed-off-by: Yanfei Xu Signed-off-by: Paul E. McKenney --- kernel/rcu/tree_stall.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/kernel/rcu/tree_stall.h b/kernel/rcu/tree_stall.h index 6c76988cc019f..2e96f9741666d 100644 --- a/kernel/rcu/tree_stall.h +++ b/kernel/rcu/tree_stall.h @@ -280,8 +280,8 @@ static int rcu_print_task_stall(struct rcu_node *rnp, unsigned long flags) break; } raw_spin_unlock_irqrestore_rcu_node(rnp, flags); - for (i--; i; i--) { - t = ts[i]; + while (i) { + t = ts[--i]; if (!try_invoke_on_locked_down_task(t, check_slow_task, &rscr)) pr_cont(" P%d", t->pid); else -- 2.31.1.189.g2e36527f23