Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp3959324pxj; Tue, 11 May 2021 16:14:49 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwMdUS1CTO/mVI8z9qndm13iugI2MV6SpfUofy/d+65UfvGXNPOnT/aMumkTtdr59gW/gNZ X-Received: by 2002:aca:d90a:: with SMTP id q10mr5378561oig.63.1620774889539; Tue, 11 May 2021 16:14:49 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1620774889; cv=none; d=google.com; s=arc-20160816; b=L2Vs0Ngz2TAIa6VkXxCIpzQwmtMYBsT9NjG1w5ManqMXomA4ofWt7svGjCUJoBQXME UwIs+M0LRqmgc8Y4YaMCIjtAptt5K0PHyAXOD8AzhfHJJLxWR3QHK5SGxLEvnFolZ647 pMToy/3V8NpHeNfVT8gbd/8EfSUKomGw2V10klKa7LDP3hW81dQIxmm+iRF/aXoJt6Cf aJPjJMTxreufVJPz/bHX2GA2sGuj3tOuLeyDbU7aEEE20YDtQges5Eh2eSQKH6sQ9AKu K2oILQfQJp+A7ygS+LwT0mvg0C/qduwn1khUyUOfY0OnOVzUGCM7ZJ3Zil90suexzW/u 5G+Q== 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=+mCYsESiSbk7uGZit/Z/vJQWG0nT/03+cxYH++1JDrE=; b=gfZL75cvwrc07PvpQozYB7F1LwxToSWhZ3AI7j1efZAUMPDooD5NKGZh6TZaUGDdzt vr8L+3NkTg5+IL+mBFF+bbjzzIlkKE0Vp/sMcV3T4Y4T6mpY8s9fOiRJzuXY/gnj1AVz mHb4kC+tCt3DNsNFPQ+BhP6Q26MupArolK4Ozye5/AfsnNipSz0lnVdmBpCQ4xifxlRn uhIoRNMyiAPWN/hQY0MvaFwWj+/OmiKvJ8h9Hggy32f2TdZAxMcXuyOidv2YF1H/6XEs WM5wCWDHb3mBoIz1zaPLKeja0v55y4sut7in7nhdCjfSmRs2OXIGE6k0CvZXskKbyUN8 ocGg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=UwIjGS1x; 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 l16si15864959otk.70.2021.05.11.16.14.36; Tue, 11 May 2021 16:14:49 -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=UwIjGS1x; 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 S231286AbhEKXOa (ORCPT + 99 others); Tue, 11 May 2021 19:14:30 -0400 Received: from mail.kernel.org ([198.145.29.99]:48054 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230322AbhEKXNd (ORCPT ); Tue, 11 May 2021 19:13:33 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 6D03161954; Tue, 11 May 2021 23:12:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1620774745; bh=U4HSy9n8wC4qfQJ+6wc/qNxwpq3Y+Rj0l00awjo/XK0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=UwIjGS1xHn9YnGHwSaqRHSppRbqiWZSapCgibaw+1l/gZdTeX3d/2O2Nf78r+5EW2 AQScjRGBE3pKWZbGv6/Fv+YQg7nsoOut3Ek58q5Q+RjSdp/xNdAHSRky+3uRoFj0hX +h3SE5y2h0u49T4ONmQjTltygee66TQ+mRftIsluDW2dHQjJGoxWslMuHn7ys77H0h zsctTQZbQ2Cw/W4+SHbNMClx+gfygg6f21xzDcU1967GiTlFnEdXy6i/2iSQHjmIVE wrS7WjlK7WbVNkDDp8Y1FlJ37weikWE/gkQKsJ41m7uER9GIPWhGYSR+9UunQfTK0D GF5bHr63tv7FA== Received: by paulmck-ThinkPad-P17-Gen-1.home (Postfix, from userid 1000) id 8872A5C0E59; Tue, 11 May 2021 16:12:24 -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, "Paul E. McKenney" Subject: [PATCH tip/core/rcu 17/26] rcutorture: Delay-based false positives for RCU priority boosting tests Date: Tue, 11 May 2021 16:12:14 -0700 Message-Id: <20210511231223.2895398-17-paulmck@kernel.org> X-Mailer: git-send-email 2.31.1.189.g2e36527f23 In-Reply-To: <20210511231149.GA2895263@paulmck-ThinkPad-P17-Gen-1> References: <20210511231149.GA2895263@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 If an rcu_torture_boost() kthread determines that its grace period has not yet ended, it invokes rcu_torture_boost_failed() which checks whether enough time has elapsed for this to be considered a failure of RCU priority boosting, and, if so, flags the error. Unfortunately, that kthread might be preempted for some seconds between the time that it checks the grace period and the time that it checks the time. This delay can result in a false positive, featuring a complaint that a particular grace period has not ended, followed by a diagnostic dump featuring a much later grace period. This commit avoids these false positives by rechecking for the end of the grace period after the time check. Signed-off-by: Paul E. McKenney --- kernel/rcu/rcutorture.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/kernel/rcu/rcutorture.c b/kernel/rcu/rcutorture.c index 06d08f4f3e52..3defd0febe15 100644 --- a/kernel/rcu/rcutorture.c +++ b/kernel/rcu/rcutorture.c @@ -921,6 +921,10 @@ static bool rcu_torture_boost_failed(unsigned long gp_state, unsigned long start static int dbg_done; if (end - start > test_boost_duration * HZ - HZ / 2) { + // Recheck after checking time to avoid false positives. + smp_mb(); // Time check before grace-period check. + if (cur_ops->poll_gp_state(gp_state)) + return false; // passed, though perhaps just barely VERBOSE_TOROUT_STRING("rcu_torture_boost boosting failed"); n_rcu_torture_boost_failure++; if (!xchg(&dbg_done, 1) && cur_ops->gp_kthread_dbg) { @@ -929,10 +933,10 @@ static bool rcu_torture_boost_failed(unsigned long gp_state, unsigned long start cur_ops->gp_kthread_dbg(); } - return true; /* failed */ + return true; // failed } - return false; /* passed */ + return false; // passed } static int rcu_torture_boost(void *arg) -- 2.31.1.189.g2e36527f23