aboutsummaryrefslogtreecommitdiffstats
diff options
authorPaul E. McKenney <paulmck@kernel.org>2025-05-16 14:37:08 -0700
committerPaul E. McKenney <paulmck@kernel.org>2025-05-16 14:37:08 -0700
commit671fe0da0f99ba69510db56a71dbac82b233cea8 (patch)
tree9e6465fec6ecc59a03a7a287567d4cdd48a82de4
parent9aada374efa210329838d35662956c40524d1378 (diff)
downloadlinux-rcu-dev.tar.gz
rcutorture: Build with CONFIG_RCU_TORTURE_TEST_CHK_RDR_STATE=y for KCSANdev
The RCU_TORTURE_TEST_CHK_RDR_STATE Kconfig option is used for low-level debugging of rcutorture's generation of overlapping and nested RCU readers. It incurs significant overhead, and is thus not to be used lightly. But if it is not tested regularly, it won't be there when it is needed. On the other hand, KCSAN's overhead is also non-trivial. This commit therefore builds KCSAN kernels CONFIG_RCU_TORTURE_TEST_CHK_RDR_STATE=y, but only for the --d0-rcutorture case. Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
-rwxr-xr-xtools/testing/selftests/rcutorture/bin/torture.sh7
1 files changed, 6 insertions, 1 deletions
diff --git a/tools/testing/selftests/rcutorture/bin/torture.sh b/tools/testing/selftests/rcutorture/bin/torture.sh
index 8154411257f2a8..ed59bd43d4f889 100755
--- a/tools/testing/selftests/rcutorture/bin/torture.sh
+++ b/tools/testing/selftests/rcutorture/bin/torture.sh
@@ -394,7 +394,12 @@ function torture_set {
kcsan_kmake_tag="--kmake-args"
cur_kcsan_kmake_args="$kcsan_kmake_args"
fi
- torture_one "$@" --kconfig "CONFIG_DEBUG_LOCK_ALLOC=y CONFIG_PROVE_LOCKING=y ${kcsan_expert} CONFIG_RCU_TORTURE_TEST_CHK_RDR_STATE=y" $kcsan_kmake_tag $cur_kcsan_kmake_args --kcsan
+ chk_rdr_state=
+ if test "${flavor}" = rcutorture
+ then
+ chk_rdr_state="CONFIG_RCU_TORTURE_TEST_CHK_RDR_STATE=y"
+ fi
+ torture_one "$@" --kconfig "CONFIG_DEBUG_LOCK_ALLOC=y CONFIG_PROVE_LOCKING=y ${kcsan_expert} ${chk_rdr_state}" $kcsan_kmake_tag $cur_kcsan_kmake_args --kcsan
mv $T/last-resdir $T/last-resdir-kcsan || :
fi
}