linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH tip/core/rcu 0/9] Torture-test changes for 4.11
@ 2017-01-14  9:25 Paul E. McKenney
  2017-01-14  9:25 ` [PATCH tip/core/rcu 1/9] torture: Add a check for CONFIG_RCU_STALL_COMMON for TINY01 Paul E. McKenney
                   ` (9 more replies)
  0 siblings, 10 replies; 12+ messages in thread
From: Paul E. McKenney @ 2017-01-14  9:25 UTC (permalink / raw)
  To: linux-kernel
  Cc: mingo, jiangshanlai, dipankar, akpm, mathieu.desnoyers, josh,
	tglx, peterz, rostedt, dhowells, edumazet, dvhart, fweisbec,
	oleg, bobby.prani

Hello!

This series provides torture-test updates:

1.	Add a check for CONFIG_RCU_STALL_COMMON for TINY01, in order
	to complain if this case is not tested.

2.	Add CONFIG_PROVE_RCU_REPEATEDLY=y for TINY02, in order to test
	this case.

3.	Add tests without slow grace period setup/cleanup, as this case
	is what is actually used in production.

4.	Run at least one test with CONFIG_DEBUG_OBJECTS_RCU_HEAD, to make
	sure that this case is tested regularly.

5.	Run one test with DEBUG_LOCK_ALLOC but not PROVE_LOCKING, to make
	sure that this case is tested regularly.

6.	Run a couple scenarios with CONFIG_RCU_EQS_DEBUG, again to make
	sure that this case is tested regularly.

7.	Update RCU test scenario documentation.

8.	Fix potential memory leak with rw lock test, courtesy of Yang Shi.

9.	Enable DEBUG_OBJECTS_RCU_HEAD for Tiny RCU, you guessed it, to
	make sure that this case is regularly tested.

							Thanx, Paul

------------------------------------------------------------------------

 kernel/locking/locktorture.c                                |    6 ++
 tools/testing/selftests/rcutorture/configs/rcu/CFcommon     |    3 -
 tools/testing/selftests/rcutorture/configs/rcu/TINY01       |    1 
 tools/testing/selftests/rcutorture/configs/rcu/TINY02       |    3 -
 tools/testing/selftests/rcutorture/configs/rcu/TREE01       |    3 +
 tools/testing/selftests/rcutorture/configs/rcu/TREE02       |    4 +
 tools/testing/selftests/rcutorture/configs/rcu/TREE03       |    3 +
 tools/testing/selftests/rcutorture/configs/rcu/TREE04       |    4 +
 tools/testing/selftests/rcutorture/configs/rcu/TREE05       |    3 +
 tools/testing/selftests/rcutorture/configs/rcu/TREE06       |    3 +
 tools/testing/selftests/rcutorture/configs/rcu/TREE07       |    3 +
 tools/testing/selftests/rcutorture/configs/rcu/TREE08       |    4 -
 tools/testing/selftests/rcutorture/doc/TREE_RCU-kconfig.txt |   33 +++++++++++-
 13 files changed, 65 insertions(+), 8 deletions(-)

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [PATCH tip/core/rcu 1/9] torture: Add a check for CONFIG_RCU_STALL_COMMON for TINY01
  2017-01-14  9:25 [PATCH tip/core/rcu 0/9] Torture-test changes for 4.11 Paul E. McKenney
@ 2017-01-14  9:25 ` Paul E. McKenney
  2017-01-14  9:25 ` [PATCH tip/core/rcu 2/9] torture: Add CONFIG_PROVE_RCU_REPEATEDLY=y for TINY02 Paul E. McKenney
                   ` (8 subsequent siblings)
  9 siblings, 0 replies; 12+ messages in thread
From: Paul E. McKenney @ 2017-01-14  9:25 UTC (permalink / raw)
  To: linux-kernel
  Cc: mingo, jiangshanlai, dipankar, akpm, mathieu.desnoyers, josh,
	tglx, peterz, rostedt, dhowells, edumazet, dvhart, fweisbec,
	oleg, bobby.prani, Paul E. McKenney

This commit verifies coverage of testing with CONFIG_RCU_STALL_COMMON=n.

Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
---
 tools/testing/selftests/rcutorture/configs/rcu/TINY01 | 1 +
 1 file changed, 1 insertion(+)

diff --git a/tools/testing/selftests/rcutorture/configs/rcu/TINY01 b/tools/testing/selftests/rcutorture/configs/rcu/TINY01
index 0a63e073a00c..6db705e55487 100644
--- a/tools/testing/selftests/rcutorture/configs/rcu/TINY01
+++ b/tools/testing/selftests/rcutorture/configs/rcu/TINY01
@@ -7,6 +7,7 @@ CONFIG_HZ_PERIODIC=n
 CONFIG_NO_HZ_IDLE=y
 CONFIG_NO_HZ_FULL=n
 CONFIG_RCU_TRACE=n
+#CHECK#CONFIG_RCU_STALL_COMMON=n
 CONFIG_DEBUG_LOCK_ALLOC=n
 CONFIG_DEBUG_OBJECTS_RCU_HEAD=n
 CONFIG_PREEMPT_COUNT=n
-- 
2.5.2

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [PATCH tip/core/rcu 2/9] torture: Add CONFIG_PROVE_RCU_REPEATEDLY=y for TINY02
  2017-01-14  9:25 [PATCH tip/core/rcu 0/9] Torture-test changes for 4.11 Paul E. McKenney
  2017-01-14  9:25 ` [PATCH tip/core/rcu 1/9] torture: Add a check for CONFIG_RCU_STALL_COMMON for TINY01 Paul E. McKenney
@ 2017-01-14  9:25 ` Paul E. McKenney
  2017-01-14  9:25 ` [PATCH tip/core/rcu 3/9] torture: Add tests without slow grace period setup/cleanup Paul E. McKenney
                   ` (7 subsequent siblings)
  9 siblings, 0 replies; 12+ messages in thread
From: Paul E. McKenney @ 2017-01-14  9:25 UTC (permalink / raw)
  To: linux-kernel
  Cc: mingo, jiangshanlai, dipankar, akpm, mathieu.desnoyers, josh,
	tglx, peterz, rostedt, dhowells, edumazet, dvhart, fweisbec,
	oleg, bobby.prani, Paul E. McKenney

This commit adds CONFIG_PROVE_RCU_REPEATEDLY=y, which has been untested
for quite some time.

Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
---
 tools/testing/selftests/rcutorture/configs/rcu/TINY02 | 1 +
 1 file changed, 1 insertion(+)

diff --git a/tools/testing/selftests/rcutorture/configs/rcu/TINY02 b/tools/testing/selftests/rcutorture/configs/rcu/TINY02
index f1892e0371c9..3a05bac2ef29 100644
--- a/tools/testing/selftests/rcutorture/configs/rcu/TINY02
+++ b/tools/testing/selftests/rcutorture/configs/rcu/TINY02
@@ -8,6 +8,7 @@ CONFIG_NO_HZ_IDLE=n
 CONFIG_NO_HZ_FULL=n
 CONFIG_RCU_TRACE=y
 CONFIG_PROVE_LOCKING=y
+CONFIG_PROVE_RCU_REPEATEDLY=y
 #CHECK#CONFIG_PROVE_RCU=y
 CONFIG_DEBUG_LOCK_ALLOC=y
 CONFIG_DEBUG_OBJECTS_RCU_HEAD=n
-- 
2.5.2

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [PATCH tip/core/rcu 3/9] torture: Add tests without slow grace period setup/cleanup
  2017-01-14  9:25 [PATCH tip/core/rcu 0/9] Torture-test changes for 4.11 Paul E. McKenney
  2017-01-14  9:25 ` [PATCH tip/core/rcu 1/9] torture: Add a check for CONFIG_RCU_STALL_COMMON for TINY01 Paul E. McKenney
  2017-01-14  9:25 ` [PATCH tip/core/rcu 2/9] torture: Add CONFIG_PROVE_RCU_REPEATEDLY=y for TINY02 Paul E. McKenney
@ 2017-01-14  9:25 ` Paul E. McKenney
  2017-01-14  9:25 ` [PATCH tip/core/rcu 4/9] torture: Run at least one test with CONFIG_DEBUG_OBJECTS_RCU_HEAD Paul E. McKenney
                   ` (6 subsequent siblings)
  9 siblings, 0 replies; 12+ messages in thread
From: Paul E. McKenney @ 2017-01-14  9:25 UTC (permalink / raw)
  To: linux-kernel
  Cc: mingo, jiangshanlai, dipankar, akpm, mathieu.desnoyers, josh,
	tglx, peterz, rostedt, dhowells, edumazet, dvhart, fweisbec,
	oleg, bobby.prani, Paul E. McKenney

This commit moves CONFIG_RCU_TORTURE_TEST_SLOW_CLEANUP,
CONFIG_RCU_TORTURE_TEST_SLOW_INIT, and CONFIG_RCU_TORTURE_TEST_SLOW_PREINIT
from CFcommon to all of the TREE scenarios other than TREE08 and TREE09
in order to do at least some testing without these Kconfig options set.

Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
---
 tools/testing/selftests/rcutorture/configs/rcu/CFcommon | 3 ---
 tools/testing/selftests/rcutorture/configs/rcu/TREE01   | 3 +++
 tools/testing/selftests/rcutorture/configs/rcu/TREE02   | 3 +++
 tools/testing/selftests/rcutorture/configs/rcu/TREE03   | 3 +++
 tools/testing/selftests/rcutorture/configs/rcu/TREE04   | 3 +++
 tools/testing/selftests/rcutorture/configs/rcu/TREE05   | 3 +++
 tools/testing/selftests/rcutorture/configs/rcu/TREE06   | 3 +++
 tools/testing/selftests/rcutorture/configs/rcu/TREE07   | 3 +++
 8 files changed, 21 insertions(+), 3 deletions(-)

diff --git a/tools/testing/selftests/rcutorture/configs/rcu/CFcommon b/tools/testing/selftests/rcutorture/configs/rcu/CFcommon
index f824b4c9d9d9..d2d2a86139db 100644
--- a/tools/testing/selftests/rcutorture/configs/rcu/CFcommon
+++ b/tools/testing/selftests/rcutorture/configs/rcu/CFcommon
@@ -1,5 +1,2 @@
 CONFIG_RCU_TORTURE_TEST=y
 CONFIG_PRINTK_TIME=y
-CONFIG_RCU_TORTURE_TEST_SLOW_CLEANUP=y
-CONFIG_RCU_TORTURE_TEST_SLOW_INIT=y
-CONFIG_RCU_TORTURE_TEST_SLOW_PREINIT=y
diff --git a/tools/testing/selftests/rcutorture/configs/rcu/TREE01 b/tools/testing/selftests/rcutorture/configs/rcu/TREE01
index f572b873c620..359cb258f639 100644
--- a/tools/testing/selftests/rcutorture/configs/rcu/TREE01
+++ b/tools/testing/selftests/rcutorture/configs/rcu/TREE01
@@ -16,3 +16,6 @@ CONFIG_DEBUG_LOCK_ALLOC=n
 CONFIG_RCU_BOOST=n
 CONFIG_DEBUG_OBJECTS_RCU_HEAD=n
 CONFIG_RCU_EXPERT=y
+CONFIG_RCU_TORTURE_TEST_SLOW_CLEANUP=y
+CONFIG_RCU_TORTURE_TEST_SLOW_INIT=y
+CONFIG_RCU_TORTURE_TEST_SLOW_PREINIT=y
diff --git a/tools/testing/selftests/rcutorture/configs/rcu/TREE02 b/tools/testing/selftests/rcutorture/configs/rcu/TREE02
index ef6a22c44dea..638150c777ed 100644
--- a/tools/testing/selftests/rcutorture/configs/rcu/TREE02
+++ b/tools/testing/selftests/rcutorture/configs/rcu/TREE02
@@ -20,3 +20,6 @@ CONFIG_PROVE_LOCKING=n
 CONFIG_RCU_BOOST=n
 CONFIG_DEBUG_OBJECTS_RCU_HEAD=n
 CONFIG_RCU_EXPERT=y
+CONFIG_RCU_TORTURE_TEST_SLOW_CLEANUP=y
+CONFIG_RCU_TORTURE_TEST_SLOW_INIT=y
+CONFIG_RCU_TORTURE_TEST_SLOW_PREINIT=y
diff --git a/tools/testing/selftests/rcutorture/configs/rcu/TREE03 b/tools/testing/selftests/rcutorture/configs/rcu/TREE03
index 7a17c503b382..3b93ee544e70 100644
--- a/tools/testing/selftests/rcutorture/configs/rcu/TREE03
+++ b/tools/testing/selftests/rcutorture/configs/rcu/TREE03
@@ -17,3 +17,6 @@ CONFIG_RCU_BOOST=y
 CONFIG_RCU_KTHREAD_PRIO=2
 CONFIG_DEBUG_OBJECTS_RCU_HEAD=n
 CONFIG_RCU_EXPERT=y
+CONFIG_RCU_TORTURE_TEST_SLOW_CLEANUP=y
+CONFIG_RCU_TORTURE_TEST_SLOW_INIT=y
+CONFIG_RCU_TORTURE_TEST_SLOW_PREINIT=y
diff --git a/tools/testing/selftests/rcutorture/configs/rcu/TREE04 b/tools/testing/selftests/rcutorture/configs/rcu/TREE04
index 17cbe098b115..a5fa5042fb7a 100644
--- a/tools/testing/selftests/rcutorture/configs/rcu/TREE04
+++ b/tools/testing/selftests/rcutorture/configs/rcu/TREE04
@@ -19,3 +19,6 @@ CONFIG_RCU_NOCB_CPU=n
 CONFIG_DEBUG_LOCK_ALLOC=n
 CONFIG_DEBUG_OBJECTS_RCU_HEAD=n
 CONFIG_RCU_EXPERT=y
+CONFIG_RCU_TORTURE_TEST_SLOW_CLEANUP=y
+CONFIG_RCU_TORTURE_TEST_SLOW_INIT=y
+CONFIG_RCU_TORTURE_TEST_SLOW_PREINIT=y
diff --git a/tools/testing/selftests/rcutorture/configs/rcu/TREE05 b/tools/testing/selftests/rcutorture/configs/rcu/TREE05
index 1257d3227b1e..d4cdc0d74e16 100644
--- a/tools/testing/selftests/rcutorture/configs/rcu/TREE05
+++ b/tools/testing/selftests/rcutorture/configs/rcu/TREE05
@@ -19,3 +19,6 @@ CONFIG_PROVE_LOCKING=y
 #CHECK#CONFIG_PROVE_RCU=y
 CONFIG_DEBUG_OBJECTS_RCU_HEAD=n
 CONFIG_RCU_EXPERT=y
+CONFIG_RCU_TORTURE_TEST_SLOW_CLEANUP=y
+CONFIG_RCU_TORTURE_TEST_SLOW_INIT=y
+CONFIG_RCU_TORTURE_TEST_SLOW_PREINIT=y
diff --git a/tools/testing/selftests/rcutorture/configs/rcu/TREE06 b/tools/testing/selftests/rcutorture/configs/rcu/TREE06
index d3e456b74cbe..4cb02bd28f08 100644
--- a/tools/testing/selftests/rcutorture/configs/rcu/TREE06
+++ b/tools/testing/selftests/rcutorture/configs/rcu/TREE06
@@ -20,3 +20,6 @@ CONFIG_PROVE_LOCKING=y
 #CHECK#CONFIG_PROVE_RCU=y
 CONFIG_DEBUG_OBJECTS_RCU_HEAD=y
 CONFIG_RCU_EXPERT=y
+CONFIG_RCU_TORTURE_TEST_SLOW_CLEANUP=y
+CONFIG_RCU_TORTURE_TEST_SLOW_INIT=y
+CONFIG_RCU_TORTURE_TEST_SLOW_PREINIT=y
diff --git a/tools/testing/selftests/rcutorture/configs/rcu/TREE07 b/tools/testing/selftests/rcutorture/configs/rcu/TREE07
index 3956b4131f72..b12a3ea1867e 100644
--- a/tools/testing/selftests/rcutorture/configs/rcu/TREE07
+++ b/tools/testing/selftests/rcutorture/configs/rcu/TREE07
@@ -19,3 +19,6 @@ CONFIG_RCU_NOCB_CPU=n
 CONFIG_DEBUG_LOCK_ALLOC=n
 CONFIG_DEBUG_OBJECTS_RCU_HEAD=n
 CONFIG_RCU_EXPERT=y
+CONFIG_RCU_TORTURE_TEST_SLOW_CLEANUP=y
+CONFIG_RCU_TORTURE_TEST_SLOW_INIT=y
+CONFIG_RCU_TORTURE_TEST_SLOW_PREINIT=y
-- 
2.5.2

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [PATCH tip/core/rcu 4/9] torture: Run at least one test with CONFIG_DEBUG_OBJECTS_RCU_HEAD
  2017-01-14  9:25 [PATCH tip/core/rcu 0/9] Torture-test changes for 4.11 Paul E. McKenney
                   ` (2 preceding siblings ...)
  2017-01-14  9:25 ` [PATCH tip/core/rcu 3/9] torture: Add tests without slow grace period setup/cleanup Paul E. McKenney
@ 2017-01-14  9:25 ` Paul E. McKenney
  2017-01-14  9:25 ` [PATCH tip/core/rcu 5/9] torture: Run one test with DEBUG_LOCK_ALLOC but not PROVE_LOCKING Paul E. McKenney
                   ` (5 subsequent siblings)
  9 siblings, 0 replies; 12+ messages in thread
From: Paul E. McKenney @ 2017-01-14  9:25 UTC (permalink / raw)
  To: linux-kernel
  Cc: mingo, jiangshanlai, dipankar, akpm, mathieu.desnoyers, josh,
	tglx, peterz, rostedt, dhowells, edumazet, dvhart, fweisbec,
	oleg, bobby.prani, Paul E. McKenney

This commit enables the CONFIG_DEBUG_OBJECTS_RCU_HEAD Kconfig option
in TREE02 in order to do at least some testing with this enabled.

Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
---
 tools/testing/selftests/rcutorture/configs/rcu/TREE02 | 1 +
 1 file changed, 1 insertion(+)

diff --git a/tools/testing/selftests/rcutorture/configs/rcu/TREE02 b/tools/testing/selftests/rcutorture/configs/rcu/TREE02
index 638150c777ed..c1ab5926568b 100644
--- a/tools/testing/selftests/rcutorture/configs/rcu/TREE02
+++ b/tools/testing/selftests/rcutorture/configs/rcu/TREE02
@@ -23,3 +23,4 @@ CONFIG_RCU_EXPERT=y
 CONFIG_RCU_TORTURE_TEST_SLOW_CLEANUP=y
 CONFIG_RCU_TORTURE_TEST_SLOW_INIT=y
 CONFIG_RCU_TORTURE_TEST_SLOW_PREINIT=y
+CONFIG_DEBUG_OBJECTS_RCU_HEAD=y
-- 
2.5.2

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [PATCH tip/core/rcu 5/9] torture: Run one test with DEBUG_LOCK_ALLOC but not PROVE_LOCKING
  2017-01-14  9:25 [PATCH tip/core/rcu 0/9] Torture-test changes for 4.11 Paul E. McKenney
                   ` (3 preceding siblings ...)
  2017-01-14  9:25 ` [PATCH tip/core/rcu 4/9] torture: Run at least one test with CONFIG_DEBUG_OBJECTS_RCU_HEAD Paul E. McKenney
@ 2017-01-14  9:25 ` Paul E. McKenney
  2017-01-14  9:25 ` [PATCH tip/core/rcu 6/9] torture: Run a couple scenarios with CONFIG_RCU_EQS_DEBUG Paul E. McKenney
                   ` (4 subsequent siblings)
  9 siblings, 0 replies; 12+ messages in thread
From: Paul E. McKenney @ 2017-01-14  9:25 UTC (permalink / raw)
  To: linux-kernel
  Cc: mingo, jiangshanlai, dipankar, akpm, mathieu.desnoyers, josh,
	tglx, peterz, rostedt, dhowells, edumazet, dvhart, fweisbec,
	oleg, bobby.prani, Paul E. McKenney

This commit sets CONFIG_DEBUG_LOCK_ALLOC but not CONFIG_PROVE_LOCKING
for TREE08 in order to have at least one test with this configuration.

Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
---
 tools/testing/selftests/rcutorture/configs/rcu/TREE08 | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/tools/testing/selftests/rcutorture/configs/rcu/TREE08 b/tools/testing/selftests/rcutorture/configs/rcu/TREE08
index bb9b0c1a23c2..22181eb390fc 100644
--- a/tools/testing/selftests/rcutorture/configs/rcu/TREE08
+++ b/tools/testing/selftests/rcutorture/configs/rcu/TREE08
@@ -17,8 +17,7 @@ CONFIG_RCU_FANOUT_LEAF=2
 CONFIG_RCU_NOCB_CPU=y
 CONFIG_RCU_NOCB_CPU_ALL=y
 CONFIG_DEBUG_LOCK_ALLOC=n
-CONFIG_PROVE_LOCKING=y
-#CHECK#CONFIG_PROVE_RCU=y
+CONFIG_PROVE_LOCKING=n
 CONFIG_RCU_BOOST=n
 CONFIG_DEBUG_OBJECTS_RCU_HEAD=n
 CONFIG_RCU_EXPERT=y
-- 
2.5.2

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [PATCH tip/core/rcu 6/9] torture: Run a couple scenarios with CONFIG_RCU_EQS_DEBUG
  2017-01-14  9:25 [PATCH tip/core/rcu 0/9] Torture-test changes for 4.11 Paul E. McKenney
                   ` (4 preceding siblings ...)
  2017-01-14  9:25 ` [PATCH tip/core/rcu 5/9] torture: Run one test with DEBUG_LOCK_ALLOC but not PROVE_LOCKING Paul E. McKenney
@ 2017-01-14  9:25 ` Paul E. McKenney
  2017-01-14  9:25 ` [PATCH tip/core/rcu 7/9] torture: Update RCU test scenario documentation Paul E. McKenney
                   ` (3 subsequent siblings)
  9 siblings, 0 replies; 12+ messages in thread
From: Paul E. McKenney @ 2017-01-14  9:25 UTC (permalink / raw)
  To: linux-kernel
  Cc: mingo, jiangshanlai, dipankar, akpm, mathieu.desnoyers, josh,
	tglx, peterz, rostedt, dhowells, edumazet, dvhart, fweisbec,
	oleg, bobby.prani, Paul E. McKenney

This commit runs TREE04 and TREE08 with CONFIG_RCU_EQS_DEBUG=y,
enabling dyntick-counter checking on those two tests.

Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
---
 tools/testing/selftests/rcutorture/configs/rcu/TREE04 | 1 +
 tools/testing/selftests/rcutorture/configs/rcu/TREE08 | 1 +
 2 files changed, 2 insertions(+)

diff --git a/tools/testing/selftests/rcutorture/configs/rcu/TREE04 b/tools/testing/selftests/rcutorture/configs/rcu/TREE04
index a5fa5042fb7a..5af758e783c7 100644
--- a/tools/testing/selftests/rcutorture/configs/rcu/TREE04
+++ b/tools/testing/selftests/rcutorture/configs/rcu/TREE04
@@ -22,3 +22,4 @@ CONFIG_RCU_EXPERT=y
 CONFIG_RCU_TORTURE_TEST_SLOW_CLEANUP=y
 CONFIG_RCU_TORTURE_TEST_SLOW_INIT=y
 CONFIG_RCU_TORTURE_TEST_SLOW_PREINIT=y
+CONFIG_RCU_EQS_DEBUG=y
diff --git a/tools/testing/selftests/rcutorture/configs/rcu/TREE08 b/tools/testing/selftests/rcutorture/configs/rcu/TREE08
index 22181eb390fc..099cc63c6a3b 100644
--- a/tools/testing/selftests/rcutorture/configs/rcu/TREE08
+++ b/tools/testing/selftests/rcutorture/configs/rcu/TREE08
@@ -21,3 +21,4 @@ CONFIG_PROVE_LOCKING=n
 CONFIG_RCU_BOOST=n
 CONFIG_DEBUG_OBJECTS_RCU_HEAD=n
 CONFIG_RCU_EXPERT=y
+CONFIG_RCU_EQS_DEBUG=y
-- 
2.5.2

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [PATCH tip/core/rcu 7/9] torture: Update RCU test scenario documentation
  2017-01-14  9:25 [PATCH tip/core/rcu 0/9] Torture-test changes for 4.11 Paul E. McKenney
                   ` (5 preceding siblings ...)
  2017-01-14  9:25 ` [PATCH tip/core/rcu 6/9] torture: Run a couple scenarios with CONFIG_RCU_EQS_DEBUG Paul E. McKenney
@ 2017-01-14  9:25 ` Paul E. McKenney
  2017-01-14  9:25 ` [PATCH tip/core/rcu 8/9] locktorture: Fix potential memory leak with rw lock test Paul E. McKenney
                   ` (2 subsequent siblings)
  9 siblings, 0 replies; 12+ messages in thread
From: Paul E. McKenney @ 2017-01-14  9:25 UTC (permalink / raw)
  To: linux-kernel
  Cc: mingo, jiangshanlai, dipankar, akpm, mathieu.desnoyers, josh,
	tglx, peterz, rostedt, dhowells, edumazet, dvhart, fweisbec,
	oleg, bobby.prani, Paul E. McKenney

Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
---
 .../selftests/rcutorture/doc/TREE_RCU-kconfig.txt  | 33 ++++++++++++++++++++--
 1 file changed, 31 insertions(+), 2 deletions(-)

diff --git a/tools/testing/selftests/rcutorture/doc/TREE_RCU-kconfig.txt b/tools/testing/selftests/rcutorture/doc/TREE_RCU-kconfig.txt
index 4e2b1893d40d..364801b1a230 100644
--- a/tools/testing/selftests/rcutorture/doc/TREE_RCU-kconfig.txt
+++ b/tools/testing/selftests/rcutorture/doc/TREE_RCU-kconfig.txt
@@ -14,6 +14,7 @@ CONFIG_NO_HZ_FULL_SYSIDLE -- Do one.
 CONFIG_PREEMPT -- Do half.  (First three and #8.)
 CONFIG_PROVE_LOCKING -- Do several, covering CONFIG_DEBUG_LOCK_ALLOC=y and not.
 CONFIG_PROVE_RCU -- Hardwired to CONFIG_PROVE_LOCKING.
+CONFIG_PROVE_RCU_REPEATEDLY -- Do one.
 CONFIG_RCU_BOOST -- one of PREEMPT_RCU.
 CONFIG_RCU_KTHREAD_PRIO -- set to 2 for _BOOST testing.
 CONFIG_RCU_FANOUT -- Cover hierarchy, but overlap with others.
@@ -25,7 +26,12 @@ CONFIG_RCU_NOCB_CPU_NONE -- Do one.
 CONFIG_RCU_NOCB_CPU_ZERO -- Do one.
 CONFIG_RCU_TRACE -- Do half.
 CONFIG_SMP -- Need one !SMP for PREEMPT_RCU.
-!RCU_EXPERT -- Do a few, but these have to be vanilla configurations.
+CONFIG_RCU_EXPERT=n -- Do a few, but these have to be vanilla configurations.
+CONFIG_RCU_EQS_DEBUG -- Do at least one for CONFIG_NO_HZ_FULL and not.
+CONFIG_RCU_TORTURE_TEST_SLOW_CLEANUP -- Do for all but a couple TREE scenarios.
+CONFIG_RCU_TORTURE_TEST_SLOW_INIT -- Do for all but a couple TREE scenarios.
+CONFIG_RCU_TORTURE_TEST_SLOW_PREINIT -- Do for all but a couple TREE scenarios.
+
 RCU-bh: Do one with PREEMPT and one with !PREEMPT.
 RCU-sched: Do one with PREEMPT but not BOOST.
 
@@ -72,7 +78,30 @@ CONFIG_RCU_TORTURE_TEST_RUNNABLE
 
 	Always used in KVM testing.
 
+CONFIG_RCU_TORTURE_TEST_SLOW_PREINIT_DELAY
+CONFIG_RCU_TORTURE_TEST_SLOW_INIT_DELAY
+CONFIG_RCU_TORTURE_TEST_SLOW_CLEANUP_DELAY
+
+	Inspection suffices, ignore.
+
 CONFIG_PREEMPT_RCU
 CONFIG_TREE_RCU
+CONFIG_TINY_RCU
+
+	These are controlled by CONFIG_PREEMPT and/or CONFIG_SMP.
+
+CONFIG_SPARSE_RCU_POINTER
+
+	Makes sense only for sparse runs, not for kernel builds.
+
+CONFIG_SRCU
+CONFIG_TASKS_RCU
+
+	Selected by CONFIG_RCU_TORTURE_TEST, so cannot disable.
+
+CONFIG_RCU_TRACE
+
+	Implied by CONFIG_RCU_TRACE for Tree RCU.
+
 
-	These are controlled by CONFIG_PREEMPT.
+boot parameters ignored: TBD
-- 
2.5.2

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [PATCH tip/core/rcu 8/9] locktorture: Fix potential memory leak with rw lock test
  2017-01-14  9:25 [PATCH tip/core/rcu 0/9] Torture-test changes for 4.11 Paul E. McKenney
                   ` (6 preceding siblings ...)
  2017-01-14  9:25 ` [PATCH tip/core/rcu 7/9] torture: Update RCU test scenario documentation Paul E. McKenney
@ 2017-01-14  9:25 ` Paul E. McKenney
  2017-01-14  9:25 ` [PATCH tip/core/rcu 9/9] torture: Enable DEBUG_OBJECTS_RCU_HEAD for Tiny RCU Paul E. McKenney
  2017-01-14 21:13 ` [PATCH tip/core/rcu 0/9] Torture-test changes for 4.11 Josh Triplett
  9 siblings, 0 replies; 12+ messages in thread
From: Paul E. McKenney @ 2017-01-14  9:25 UTC (permalink / raw)
  To: linux-kernel
  Cc: mingo, jiangshanlai, dipankar, akpm, mathieu.desnoyers, josh,
	tglx, peterz, rostedt, dhowells, edumazet, dvhart, fweisbec,
	oleg, bobby.prani, Yang Shi, Paul E. McKenney

From: Yang Shi <yang.shi@linaro.org>

When running locktorture module with the below commands with kmemleak enabled:

$ modprobe locktorture torture_type=rw_lock_irq
$ rmmod locktorture

The below kmemleak got caught:

root@10:~# echo scan > /sys/kernel/debug/kmemleak
[  323.197029] kmemleak: 2 new suspected memory leaks (see /sys/kernel/debug/kmemleak)
root@10:~# cat /sys/kernel/debug/kmemleak
unreferenced object 0xffffffc07592d500 (size 128):
  comm "modprobe", pid 368, jiffies 4294924118 (age 205.824s)
  hex dump (first 32 bytes):
    00 00 00 00 00 00 00 00 c3 7b 02 00 00 00 00 00  .........{......
    00 00 00 00 00 00 00 00 d7 9b 02 00 00 00 00 00  ................
  backtrace:
    [<ffffff80081e5a88>] create_object+0x110/0x288
    [<ffffff80086c6078>] kmemleak_alloc+0x58/0xa0
    [<ffffff80081d5acc>] __kmalloc+0x234/0x318
    [<ffffff80006fa130>] 0xffffff80006fa130
    [<ffffff8008083ae4>] do_one_initcall+0x44/0x138
    [<ffffff800817e28c>] do_init_module+0x68/0x1cc
    [<ffffff800811c848>] load_module+0x1a68/0x22e0
    [<ffffff800811d340>] SyS_finit_module+0xe0/0xf0
    [<ffffff80080836f0>] el0_svc_naked+0x24/0x28
    [<ffffffffffffffff>] 0xffffffffffffffff
unreferenced object 0xffffffc07592d480 (size 128):
  comm "modprobe", pid 368, jiffies 4294924118 (age 205.824s)
  hex dump (first 32 bytes):
    00 00 00 00 00 00 00 00 3b 6f 01 00 00 00 00 00  ........;o......
    00 00 00 00 00 00 00 00 23 6a 01 00 00 00 00 00  ........#j......
  backtrace:
    [<ffffff80081e5a88>] create_object+0x110/0x288
    [<ffffff80086c6078>] kmemleak_alloc+0x58/0xa0
    [<ffffff80081d5acc>] __kmalloc+0x234/0x318
    [<ffffff80006fa22c>] 0xffffff80006fa22c
    [<ffffff8008083ae4>] do_one_initcall+0x44/0x138
    [<ffffff800817e28c>] do_init_module+0x68/0x1cc
    [<ffffff800811c848>] load_module+0x1a68/0x22e0
    [<ffffff800811d340>] SyS_finit_module+0xe0/0xf0
    [<ffffff80080836f0>] el0_svc_naked+0x24/0x28
    [<ffffffffffffffff>] 0xffffffffffffffff

It is because cxt.lwsa and cxt.lrsa don't get freed in module_exit, so free
them in lock_torture_cleanup() and free writer_tasks if reader_tasks is
failed at memory allocation.

Signed-off-by: Yang Shi <yang.shi@linaro.org>
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
---
 kernel/locking/locktorture.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/kernel/locking/locktorture.c b/kernel/locking/locktorture.c
index f8c5af52a131..d3de04b12f8c 100644
--- a/kernel/locking/locktorture.c
+++ b/kernel/locking/locktorture.c
@@ -780,6 +780,10 @@ static void lock_torture_cleanup(void)
 	else
 		lock_torture_print_module_parms(cxt.cur_ops,
 						"End of test: SUCCESS");
+
+	kfree(cxt.lwsa);
+	kfree(cxt.lrsa);
+
 end:
 	torture_cleanup_end();
 }
@@ -924,6 +928,8 @@ static int __init lock_torture_init(void)
 				       GFP_KERNEL);
 		if (reader_tasks == NULL) {
 			VERBOSE_TOROUT_ERRSTRING("reader_tasks: Out of memory");
+			kfree(writer_tasks);
+			writer_tasks = NULL;
 			firsterr = -ENOMEM;
 			goto unwind;
 		}
-- 
2.5.2

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [PATCH tip/core/rcu 9/9] torture: Enable DEBUG_OBJECTS_RCU_HEAD for Tiny RCU
  2017-01-14  9:25 [PATCH tip/core/rcu 0/9] Torture-test changes for 4.11 Paul E. McKenney
                   ` (7 preceding siblings ...)
  2017-01-14  9:25 ` [PATCH tip/core/rcu 8/9] locktorture: Fix potential memory leak with rw lock test Paul E. McKenney
@ 2017-01-14  9:25 ` Paul E. McKenney
  2017-01-14 21:13 ` [PATCH tip/core/rcu 0/9] Torture-test changes for 4.11 Josh Triplett
  9 siblings, 0 replies; 12+ messages in thread
From: Paul E. McKenney @ 2017-01-14  9:25 UTC (permalink / raw)
  To: linux-kernel
  Cc: mingo, jiangshanlai, dipankar, akpm, mathieu.desnoyers, josh,
	tglx, peterz, rostedt, dhowells, edumazet, dvhart, fweisbec,
	oleg, bobby.prani, Paul E. McKenney

The RCU torture tests currently do not run any Tiny RCU scenarios for
CONFIG_DEBUG_OBJECTS_RCU_HEAD=y.  This is a hole in the test, given
that someone might need this in real life and given that Tiny RCU uses
different callback-handling code than does Tree RCU.  This commit
therefore enables this Kconfig option for scenario TINY02.

Reported-by: "Ahmed, Iftekhar" <ahmedi@oregonstate.edu>
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
---
 tools/testing/selftests/rcutorture/configs/rcu/TINY02 | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tools/testing/selftests/rcutorture/configs/rcu/TINY02 b/tools/testing/selftests/rcutorture/configs/rcu/TINY02
index 3a05bac2ef29..a59f7686e219 100644
--- a/tools/testing/selftests/rcutorture/configs/rcu/TINY02
+++ b/tools/testing/selftests/rcutorture/configs/rcu/TINY02
@@ -11,5 +11,5 @@ CONFIG_PROVE_LOCKING=y
 CONFIG_PROVE_RCU_REPEATEDLY=y
 #CHECK#CONFIG_PROVE_RCU=y
 CONFIG_DEBUG_LOCK_ALLOC=y
-CONFIG_DEBUG_OBJECTS_RCU_HEAD=n
+CONFIG_DEBUG_OBJECTS_RCU_HEAD=y
 CONFIG_PREEMPT_COUNT=y
-- 
2.5.2

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* Re: [PATCH tip/core/rcu 0/9] Torture-test changes for 4.11
  2017-01-14  9:25 [PATCH tip/core/rcu 0/9] Torture-test changes for 4.11 Paul E. McKenney
                   ` (8 preceding siblings ...)
  2017-01-14  9:25 ` [PATCH tip/core/rcu 9/9] torture: Enable DEBUG_OBJECTS_RCU_HEAD for Tiny RCU Paul E. McKenney
@ 2017-01-14 21:13 ` Josh Triplett
  2017-01-15  5:39   ` Paul E. McKenney
  9 siblings, 1 reply; 12+ messages in thread
From: Josh Triplett @ 2017-01-14 21:13 UTC (permalink / raw)
  To: Paul E. McKenney
  Cc: linux-kernel, mingo, jiangshanlai, dipankar, akpm,
	mathieu.desnoyers, tglx, peterz, rostedt, dhowells, edumazet,
	dvhart, fweisbec, oleg, bobby.prani

On Sat, Jan 14, 2017 at 01:25:33AM -0800, Paul E. McKenney wrote:
> Hello!
> 
> This series provides torture-test updates:
> 
> 1.	Add a check for CONFIG_RCU_STALL_COMMON for TINY01, in order
> 	to complain if this case is not tested.
> 
> 2.	Add CONFIG_PROVE_RCU_REPEATEDLY=y for TINY02, in order to test
> 	this case.
> 
> 3.	Add tests without slow grace period setup/cleanup, as this case
> 	is what is actually used in production.
> 
> 4.	Run at least one test with CONFIG_DEBUG_OBJECTS_RCU_HEAD, to make
> 	sure that this case is tested regularly.
> 
> 5.	Run one test with DEBUG_LOCK_ALLOC but not PROVE_LOCKING, to make
> 	sure that this case is tested regularly.
> 
> 6.	Run a couple scenarios with CONFIG_RCU_EQS_DEBUG, again to make
> 	sure that this case is tested regularly.
> 
> 7.	Update RCU test scenario documentation.
> 
> 8.	Fix potential memory leak with rw lock test, courtesy of Yang Shi.
> 
> 9.	Enable DEBUG_OBJECTS_RCU_HEAD for Tiny RCU, you guessed it, to
> 	make sure that this case is regularly tested.

Reviewed-by: Josh Triplett <josh@joshtriplett.org>

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH tip/core/rcu 0/9] Torture-test changes for 4.11
  2017-01-14 21:13 ` [PATCH tip/core/rcu 0/9] Torture-test changes for 4.11 Josh Triplett
@ 2017-01-15  5:39   ` Paul E. McKenney
  0 siblings, 0 replies; 12+ messages in thread
From: Paul E. McKenney @ 2017-01-15  5:39 UTC (permalink / raw)
  To: Josh Triplett
  Cc: linux-kernel, mingo, jiangshanlai, dipankar, akpm,
	mathieu.desnoyers, tglx, peterz, rostedt, dhowells, edumazet,
	dvhart, fweisbec, oleg, bobby.prani

On Sat, Jan 14, 2017 at 01:13:36PM -0800, Josh Triplett wrote:
> On Sat, Jan 14, 2017 at 01:25:33AM -0800, Paul E. McKenney wrote:
> > Hello!
> > 
> > This series provides torture-test updates:
> > 
> > 1.	Add a check for CONFIG_RCU_STALL_COMMON for TINY01, in order
> > 	to complain if this case is not tested.
> > 
> > 2.	Add CONFIG_PROVE_RCU_REPEATEDLY=y for TINY02, in order to test
> > 	this case.
> > 
> > 3.	Add tests without slow grace period setup/cleanup, as this case
> > 	is what is actually used in production.
> > 
> > 4.	Run at least one test with CONFIG_DEBUG_OBJECTS_RCU_HEAD, to make
> > 	sure that this case is tested regularly.
> > 
> > 5.	Run one test with DEBUG_LOCK_ALLOC but not PROVE_LOCKING, to make
> > 	sure that this case is tested regularly.
> > 
> > 6.	Run a couple scenarios with CONFIG_RCU_EQS_DEBUG, again to make
> > 	sure that this case is tested regularly.
> > 
> > 7.	Update RCU test scenario documentation.
> > 
> > 8.	Fix potential memory leak with rw lock test, courtesy of Yang Shi.
> > 
> > 9.	Enable DEBUG_OBJECTS_RCU_HEAD for Tiny RCU, you guessed it, to
> > 	make sure that this case is regularly tested.
> 
> Reviewed-by: Josh Triplett <josh@joshtriplett.org>

Applied, thank you!

							Thanx, Paul

^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2017-01-15  5:39 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-01-14  9:25 [PATCH tip/core/rcu 0/9] Torture-test changes for 4.11 Paul E. McKenney
2017-01-14  9:25 ` [PATCH tip/core/rcu 1/9] torture: Add a check for CONFIG_RCU_STALL_COMMON for TINY01 Paul E. McKenney
2017-01-14  9:25 ` [PATCH tip/core/rcu 2/9] torture: Add CONFIG_PROVE_RCU_REPEATEDLY=y for TINY02 Paul E. McKenney
2017-01-14  9:25 ` [PATCH tip/core/rcu 3/9] torture: Add tests without slow grace period setup/cleanup Paul E. McKenney
2017-01-14  9:25 ` [PATCH tip/core/rcu 4/9] torture: Run at least one test with CONFIG_DEBUG_OBJECTS_RCU_HEAD Paul E. McKenney
2017-01-14  9:25 ` [PATCH tip/core/rcu 5/9] torture: Run one test with DEBUG_LOCK_ALLOC but not PROVE_LOCKING Paul E. McKenney
2017-01-14  9:25 ` [PATCH tip/core/rcu 6/9] torture: Run a couple scenarios with CONFIG_RCU_EQS_DEBUG Paul E. McKenney
2017-01-14  9:25 ` [PATCH tip/core/rcu 7/9] torture: Update RCU test scenario documentation Paul E. McKenney
2017-01-14  9:25 ` [PATCH tip/core/rcu 8/9] locktorture: Fix potential memory leak with rw lock test Paul E. McKenney
2017-01-14  9:25 ` [PATCH tip/core/rcu 9/9] torture: Enable DEBUG_OBJECTS_RCU_HEAD for Tiny RCU Paul E. McKenney
2017-01-14 21:13 ` [PATCH tip/core/rcu 0/9] Torture-test changes for 4.11 Josh Triplett
2017-01-15  5:39   ` Paul E. McKenney

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).