diff mbox series

[linux-next:master] c9b55f9da0: WARNING:at_kernel/rcu/rcutorture.c:#rcutorture_one_extend_check[rcutorture]

Message ID 202502171415.8ec87c87-lkp@intel.com (mailing list archive)
State New
Headers show
Series [linux-next:master] c9b55f9da0: WARNING:at_kernel/rcu/rcutorture.c:#rcutorture_one_extend_check[rcutorture] | expand

Commit Message

kernel test robot Feb. 17, 2025, 6:30 a.m. UTC
hi, Ankur Arora and all,

this is not a regression report as our bot normally does. this report is just
FYI that we observe a WARNING with this config, in case it could supply any
useful information and/or somebody wants to have a look.

by this change, the config has below diff with parent:

==================== PARENT FIRST_BAD KCONFIGS f001b7165def8f7af6ce95d08f0e1bbc2442654d ====================


below is full report.


Hello,

kernel test robot noticed "WARNING:at_kernel/rcu/rcutorture.c:#rcutorture_one_extend_check[rcutorture]" on:

commit: c9b55f9da0d2c72c8c8d8cd5df84af5251b74283 ("rcu: limit PREEMPT_RCU configurations")
https://git.kernel.org/cgit/linux/kernel/git/next/linux-next.git master

[test failed on linux-next/master c674aa7c289e51659e40dda0f954886ef7f80042]

in testcase: rcutorture
version: 
with following parameters:

	runtime: 300s
	test: cpuhotplug
	torture_type: rcu



config: i386-randconfig-r121-20250212
compiler: gcc-12
test machine: qemu-system-x86_64 -enable-kvm -cpu SandyBridge -smp 2 -m 16G

(please refer to attached dmesg/kmsg for entire log/backtrace)


+-----------------------------------------------------------------------------+------------+------------+
|                                                                             | f001b7165d | c9b55f9da0 |
+-----------------------------------------------------------------------------+------------+------------+
| WARNING:at_kernel/rcu/rcutorture.c:#rcutorture_one_extend_check[rcutorture] | 0          | 12         |
| EIP:rcutorture_one_extend_check                                             | 0          | 12         |
+-----------------------------------------------------------------------------+------------+------------+


If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <oliver.sang@intel.com>
| Closes: https://lore.kernel.org/oe-lkp/202502171415.8ec87c87-lkp@intel.com


The kernel config and materials to reproduce are available at:
https://download.01.org/0day-ci/archive/20250217/202502171415.8ec87c87-lkp@intel.com


[  109.553253][  T781] rcu-torture: rcu_torture_reader task started
[  109.553258][  T781] ------------[ cut here ]------------
[  109.553259][  T781] rcutorture_one_extend_check during change: Current 0x4  To add 0x4  To remove 0x0  preempt_count() 0x1
[  109.553292][  T781] WARNING: CPU: 1 PID: 781 at kernel/rcu/rcutorture.c:1905 rcutorture_one_extend_check+0x25a/0x267 [rcutorture]
[  109.553302][  T781] Modules linked in: rcutorture(+) torture
[  109.553307][  T781] CPU: 1 UID: 0 PID: 781 Comm: rcu_torture_rea Tainted: G                T  6.14.0-rc1-00007-gc9b55f9da0d2 #1
[  109.553310][  T781] Tainted: [T]=RANDSTRUCT
[  109.553311][  T781] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.2-debian-1.16.2-1 04/01/2014
[  109.553312][  T781] EIP: rcutorture_one_extend_check+0x25a/0x267 [rcutorture]
[  109.553318][  T781] Code: 75 2d c6 05 fd 04 1c f1 01 64 a1 84 77 7c 97 25 ff ff ff 7f 50 ff 75 08 57 53 56 68 60 9f 1c f1 68 a4 74 1c f1 e8 8d d3 ca a3 <0f> 0b 83 c4 1c 8d 65 f4 5b 5e 5f 5d c3 55 31 d2 83 f8 1f 89 e5 53
[  109.553320][  T781] EAX: 00000066 EBX: 00000004 ECX: 00000027 EDX: e89c1a00
[  109.553322][  T781] ESI: f11c92d9 EDI: 00000004 EBP: 825d1d88 ESP: 825d1d54
[  109.553323][  T781] DS: 007b ES: 007b FS: 00d8 GS: 0000 SS: 0068 EFLAGS: 00010282
[  109.553327][  T781] CR0: 80050033 CR2: 77235000 CR3: 010c5000 CR4: 00040690
[  109.553328][  T781] DR0: 00000000 DR1: 00000000 DR2: 00000000 DR3: 00000000
[  109.553330][  T781] DR6: fffe0ff0 DR7: 00000400
[  109.553331][  T781] Call Trace:
[  109.553333][  T781]  ? show_regs+0x4c/0x52
[  109.553343][  T781]  ? rcutorture_one_extend_check+0x25a/0x267 [rcutorture]
[  109.553349][  T781]  ? __warn+0x9e/0x15f
[  109.553354][  T781]  ? report_bug+0xe8/0x14a
[  109.553357][  T781]  ? rcutorture_one_extend_check+0x25a/0x267 [rcutorture]
[  109.553364][  T781]  ? exc_overflow+0x37/0x37
[  109.553367][  T781]  ? handle_bug+0x3a/0x55
[  109.553369][  T781]  ? exc_invalid_op+0x1a/0x56
[  109.553372][  T781]  ? handle_exception+0x148/0x148
[  109.553376][  T781]  ? osq_wait_next+0x18/0x41
[  109.553379][  T781]  ? exc_overflow+0x37/0x37
[  109.553381][  T781]  ? rcutorture_one_extend_check+0x25a/0x267 [rcutorture]
[  109.553388][  T781]  ? exc_overflow+0x37/0x37
[  109.553390][  T781]  ? rcutorture_one_extend_check+0x25a/0x267 [rcutorture]
[  109.553399][  T781]  rcutorture_one_extend+0x18c/0x3c1 [rcutorture]
[  109.553410][  T781]  rcu_torture_one_read+0x95/0x4d2 [rcutorture]
[  109.553417][  T781]  ? validate_chain+0x3d/0x24c
[  109.553420][  T781]  ? mark_lock+0x6a/0x14d
[  109.553440][  T781]  rcu_torture_reader+0xc4/0xdbd [rcutorture]
[  109.553448][  T781]  ? rcu_torture_one_read+0x4d2/0x4d2 [rcutorture]
[  109.553457][  T781]  kthread+0x169/0x16e
[  109.553459][  T781]  ? rcu_torture_read_exit_child+0x3a/0x3a [rcutorture]
[  109.553466][  T781]  ? kthread_is_per_cpu+0x17/0x17
[  109.553468][  T781]  ret_from_fork+0x19/0x2c
[  109.553471][  T781]  ? kthread_is_per_cpu+0x17/0x17
[  109.553472][  T781]  ret_from_fork_asm+0x12/0x20
[  109.553475][  T781]  entry_INT80_32+0x108/0x108
[  109.553481][  T781] irq event stamp: 307
[  109.553482][  T781] hardirqs last  enabled at (313): [<94ebb6cb>] console_trylock_spinning+0x6b/0x10a
[  109.553485][  T781] hardirqs last disabled at (318): [<94ebb691>] console_trylock_spinning+0x31/0x10a
[  109.553486][  T781] softirqs last  enabled at (0): [<94e613c4>] copy_process+0x945/0x1a7d
[  109.553489][  T781] softirqs last disabled at (0): [<00000000>] 0x0
[  109.553491][  T781] ---[ end trace 0000000000000000 ]---
[  109.553494][  T781] ------------[ cut here ]------------
[  109.553496][  T781] rcutorture_one_extend_check after change: Current 0x60  To add 0x60  To remove 0x4  preempt_count() 0x2
[  109.553510][  T781] WARNING: CPU: 1 PID: 781 at kernel/rcu/rcutorture.c:1902 rcutorture_one_extend_check+0x20d/0x267 [rcutorture]
[  109.553517][  T781] Modules linked in: rcutorture(+) torture
[  109.553520][  T781] CPU: 1 UID: 0 PID: 781 Comm: rcu_torture_rea Tainted: G        W       T  6.14.0-rc1-00007-gc9b55f9da0d2 #1
[  109.553523][  T781] Tainted: [W]=WARN, [T]=RANDSTRUCT
[  109.553524][  T781] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.2-debian-1.16.2-1 04/01/2014
[  109.553525][  T781] EIP: rcutorture_one_extend_check+0x20d/0x267 [rcutorture]
[  109.553530][  T781] Code: 3d fe 04 1c f1 00 75 27 25 ff ff ff 7f c6 05 fe 04 1c f1 01 50 ff 75 08 57 53 56 68 60 9f 1c f1 68 a4 74 1c f1 e8 da d3 ca a3 <0f> 0b 83 c4 1c a1 40 09 1c f1 8b 40 1c 85 c0 74 41 f6 c3 60 75 3c
[  109.553532][  T781] EAX: 00000067 EBX: 00000060 ECX: 00000027 EDX: e89c1a00
[  109.553533][  T781] ESI: f11c936d EDI: 00000060 EBP: 825d1d88 ESP: 825d1d54
[  109.553535][  T781] DS: 007b ES: 007b FS: 00d8 GS: 0000 SS: 0068 EFLAGS: 00010282
[  109.553537][  T781] CR0: 80050033 CR2: 77235000 CR3: 010c5000 CR4: 00040690
[  109.553539][  T781] DR0: 00000000 DR1: 00000000 DR2: 00000000 DR3: 00000000
[  109.553540][  T781] DR6: fffe0ff0 DR7: 00000400
[  109.553541][  T781] Call Trace:
[  109.553543][  T781]  ? show_regs+0x4c/0x52
[  109.553545][  T781]  ? rcutorture_one_extend_check+0x20d/0x267 [rcutorture]
[  109.553551][  T781]  ? __warn+0x9e/0x15f
[  109.553555][  T781]  ? report_bug+0xe8/0x14a
[  109.553558][  T781]  ? rcutorture_one_extend_check+0x20d/0x267 [rcutorture]
[  109.553565][  T781]  ? exc_overflow+0x37/0x37
[  109.553567][  T781]  ? handle_bug+0x3a/0x55
[  109.553569][  T781]  ? exc_invalid_op+0x1a/0x56
[  109.553572][  T781]  ? handle_exception+0x148/0x148
[  109.553575][  T781]  ? osq_wait_next+0x18/0x41
[  109.553578][  T781]  ? exc_overflow+0x37/0x37
[  109.553580][  T781]  ? rcutorture_one_extend_check+0x20d/0x267 [rcutorture]
[  109.553587][  T781]  ? exc_overflow+0x37/0x37
[  109.553589][  T781]  ? rcutorture_one_extend_check+0x20d/0x267 [rcutorture]
[  109.553599][  T781]  rcutorture_one_extend+0x3b7/0x3c1 [rcutorture]
[  109.553610][  T781]  rcu_torture_one_read+0x21b/0x4d2 [rcutorture]
[  109.553638][  T781]  rcu_torture_reader+0xc4/0xdbd [rcutorture]
[  109.553646][  T781]  ? rcu_torture_one_read+0x4d2/0x4d2 [rcutorture]
[  109.553655][  T781]  kthread+0x169/0x16e
[  109.553658][  T781]  ? rcu_torture_read_exit_child+0x3a/0x3a [rcutorture]
[  109.553664][  T781]  ? kthread_is_per_cpu+0x17/0x17
[  109.553667][  T781]  ret_from_fork+0x19/0x2c
[  109.553669][  T781]  ? kthread_is_per_cpu+0x17/0x17
[  109.553671][  T781]  ret_from_fork_asm+0x12/0x20
[  109.553673][  T781]  entry_INT80_32+0x108/0x108
[  109.553679][  T781] irq event stamp: 607
[  109.553680][  T781] hardirqs last  enabled at (613): [<94ebb6cb>] console_trylock_spinning+0x6b/0x10a
[  109.553682][  T781] hardirqs last disabled at (618): [<94ebb691>] console_trylock_spinning+0x31/0x10a
[  109.553684][  T781] softirqs last  enabled at (0): [<94e613c4>] copy_process+0x945/0x1a7d
[  109.553686][  T781] softirqs last disabled at (0): [<00000000>] 0x0
[  109.553688][  T781] ---[ end trace 0000000000000000 ]---
[  109.634034][  T769] rcu-torture: Creating torture_shuffle task
[  109.635952][  T782] rcu-torture: rcu_torture_stats task started
[  109.637994][  T769] rcu-torture: Creating torture_stutter task

Comments

Paul E. McKenney Feb. 19, 2025, 4:51 p.m. UTC | #1
On Mon, Feb 17, 2025 at 02:30:16PM +0800, kernel test robot wrote:
> 
> hi, Ankur Arora and all,
> 
> this is not a regression report as our bot normally does. this report is just
> FYI that we observe a WARNING with this config, in case it could supply any
> useful information and/or somebody wants to have a look.
> 
> by this change, the config has below diff with parent:
> 
> ==================== PARENT FIRST_BAD KCONFIGS f001b7165def8f7af6ce95d08f0e1bbc2442654d ====================
> --- /pkg/linux/i386-randconfig-r121-20250212/gcc-12/f001b7165def8f7af6ce95d08f0e1bbc2442654d/.config    2025-02-13 07:56:33.420457682 +0800
> +++ /pkg/linux/i386-randconfig-r121-20250212/gcc-12/c9b55f9da0d2c72c8c8d8cd5df84af5251b74283/.config    2025-02-13 08:43:08.186415593 +0800
> @@ -147,7 +147,6 @@ CONFIG_BSD_PROCESS_ACCT=y
>  # RCU Subsystem
>  #
>  CONFIG_TREE_RCU=y
> -CONFIG_PREEMPT_RCU=y
>  CONFIG_RCU_EXPERT=y
>  CONFIG_TREE_SRCU=y
>  CONFIG_TASKS_RCU_GENERIC=y
> @@ -162,7 +161,6 @@ CONFIG_RCU_STALL_COMMON=y
>  CONFIG_RCU_NEED_SEGCBLIST=y
>  CONFIG_RCU_FANOUT=32
>  CONFIG_RCU_FANOUT_LEAF=16
> -# CONFIG_RCU_BOOST is not set
>  # CONFIG_RCU_NOCB_CPU is not set
>  # CONFIG_TASKS_TRACE_RCU_READ_MB is not set
>  # CONFIG_RCU_DOUBLE_CHECK_CB_TIME is not set
> 
> 
> below is full report.
> 
> 
> Hello,
> 
> kernel test robot noticed "WARNING:at_kernel/rcu/rcutorture.c:#rcutorture_one_extend_check[rcutorture]" on:
> 
> commit: c9b55f9da0d2c72c8c8d8cd5df84af5251b74283 ("rcu: limit PREEMPT_RCU configurations")
> https://git.kernel.org/cgit/linux/kernel/git/next/linux-next.git master
> 
> [test failed on linux-next/master c674aa7c289e51659e40dda0f954886ef7f80042]
> 
> in testcase: rcutorture
> version: 
> with following parameters:
> 
> 	runtime: 300s
> 	test: cpuhotplug
> 	torture_type: rcu
> 
> 
> 
> config: i386-randconfig-r121-20250212
> compiler: gcc-12
> test machine: qemu-system-x86_64 -enable-kvm -cpu SandyBridge -smp 2 -m 16G
> 
> (please refer to attached dmesg/kmsg for entire log/backtrace)
> 
> 
> +-----------------------------------------------------------------------------+------------+------------+
> |                                                                             | f001b7165d | c9b55f9da0 |
> +-----------------------------------------------------------------------------+------------+------------+
> | WARNING:at_kernel/rcu/rcutorture.c:#rcutorture_one_extend_check[rcutorture] | 0          | 12         |
> | EIP:rcutorture_one_extend_check                                             | 0          | 12         |
> +-----------------------------------------------------------------------------+------------+------------+
> 
> 
> If you fix the issue in a separate patch/commit (i.e. not just a new version of
> the same patch/commit), kindly add following tags
> | Reported-by: kernel test robot <oliver.sang@intel.com>
> | Closes: https://lore.kernel.org/oe-lkp/202502171415.8ec87c87-lkp@intel.com
> 
> 
> The kernel config and materials to reproduce are available at:
> https://download.01.org/0day-ci/archive/20250217/202502171415.8ec87c87-lkp@intel.com
> 
> 
> [  109.553253][  T781] rcu-torture: rcu_torture_reader task started
> [  109.553258][  T781] ------------[ cut here ]------------
> [  109.553259][  T781] rcutorture_one_extend_check during change: Current 0x4  To add 0x4  To remove 0x0  preempt_count() 0x1
> [  109.553292][  T781] WARNING: CPU: 1 PID: 781 at kernel/rcu/rcutorture.c:1905 rcutorture_one_extend_check+0x25a/0x267 [rcutorture]
> [  109.553302][  T781] Modules linked in: rcutorture(+) torture
> [  109.553307][  T781] CPU: 1 UID: 0 PID: 781 Comm: rcu_torture_rea Tainted: G                T  6.14.0-rc1-00007-gc9b55f9da0d2 #1
> [  109.553310][  T781] Tainted: [T]=RANDSTRUCT
> [  109.553311][  T781] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.2-debian-1.16.2-1 04/01/2014
> [  109.553312][  T781] EIP: rcutorture_one_extend_check+0x25a/0x267 [rcutorture]
> [  109.553318][  T781] Code: 75 2d c6 05 fd 04 1c f1 01 64 a1 84 77 7c 97 25 ff ff ff 7f 50 ff 75 08 57 53 56 68 60 9f 1c f1 68 a4 74 1c f1 e8 8d d3 ca a3 <0f> 0b 83 c4 1c 8d 65 f4 5b 5e 5f 5d c3 55 31 d2 83 f8 1f 89 e5 53
> [  109.553320][  T781] EAX: 00000066 EBX: 00000004 ECX: 00000027 EDX: e89c1a00
> [  109.553322][  T781] ESI: f11c92d9 EDI: 00000004 EBP: 825d1d88 ESP: 825d1d54
> [  109.553323][  T781] DS: 007b ES: 007b FS: 00d8 GS: 0000 SS: 0068 EFLAGS: 00010282
> [  109.553327][  T781] CR0: 80050033 CR2: 77235000 CR3: 010c5000 CR4: 00040690
> [  109.553328][  T781] DR0: 00000000 DR1: 00000000 DR2: 00000000 DR3: 00000000
> [  109.553330][  T781] DR6: fffe0ff0 DR7: 00000400
> [  109.553331][  T781] Call Trace:
> [  109.553333][  T781]  ? show_regs+0x4c/0x52
> [  109.553343][  T781]  ? rcutorture_one_extend_check+0x25a/0x267 [rcutorture]
> [  109.553349][  T781]  ? __warn+0x9e/0x15f
> [  109.553354][  T781]  ? report_bug+0xe8/0x14a
> [  109.553357][  T781]  ? rcutorture_one_extend_check+0x25a/0x267 [rcutorture]
> [  109.553364][  T781]  ? exc_overflow+0x37/0x37
> [  109.553367][  T781]  ? handle_bug+0x3a/0x55
> [  109.553369][  T781]  ? exc_invalid_op+0x1a/0x56
> [  109.553372][  T781]  ? handle_exception+0x148/0x148
> [  109.553376][  T781]  ? osq_wait_next+0x18/0x41
> [  109.553379][  T781]  ? exc_overflow+0x37/0x37
> [  109.553381][  T781]  ? rcutorture_one_extend_check+0x25a/0x267 [rcutorture]
> [  109.553388][  T781]  ? exc_overflow+0x37/0x37
> [  109.553390][  T781]  ? rcutorture_one_extend_check+0x25a/0x267 [rcutorture]
> [  109.553399][  T781]  rcutorture_one_extend+0x18c/0x3c1 [rcutorture]
> [  109.553410][  T781]  rcu_torture_one_read+0x95/0x4d2 [rcutorture]
> [  109.553417][  T781]  ? validate_chain+0x3d/0x24c
> [  109.553420][  T781]  ? mark_lock+0x6a/0x14d
> [  109.553440][  T781]  rcu_torture_reader+0xc4/0xdbd [rcutorture]
> [  109.553448][  T781]  ? rcu_torture_one_read+0x4d2/0x4d2 [rcutorture]
> [  109.553457][  T781]  kthread+0x169/0x16e
> [  109.553459][  T781]  ? rcu_torture_read_exit_child+0x3a/0x3a [rcutorture]
> [  109.553466][  T781]  ? kthread_is_per_cpu+0x17/0x17
> [  109.553468][  T781]  ret_from_fork+0x19/0x2c
> [  109.553471][  T781]  ? kthread_is_per_cpu+0x17/0x17
> [  109.553472][  T781]  ret_from_fork_asm+0x12/0x20
> [  109.553475][  T781]  entry_INT80_32+0x108/0x108
> [  109.553481][  T781] irq event stamp: 307
> [  109.553482][  T781] hardirqs last  enabled at (313): [<94ebb6cb>] console_trylock_spinning+0x6b/0x10a
> [  109.553485][  T781] hardirqs last disabled at (318): [<94ebb691>] console_trylock_spinning+0x31/0x10a
> [  109.553486][  T781] softirqs last  enabled at (0): [<94e613c4>] copy_process+0x945/0x1a7d
> [  109.553489][  T781] softirqs last disabled at (0): [<00000000>] 0x0
> [  109.553491][  T781] ---[ end trace 0000000000000000 ]---
> [  109.553494][  T781] ------------[ cut here ]------------
> [  109.553496][  T781] rcutorture_one_extend_check after change: Current 0x60  To add 0x60  To remove 0x4  preempt_count() 0x2
> [  109.553510][  T781] WARNING: CPU: 1 PID: 781 at kernel/rcu/rcutorture.c:1902 rcutorture_one_extend_check+0x20d/0x267 [rcutorture]
> [  109.553517][  T781] Modules linked in: rcutorture(+) torture
> [  109.553520][  T781] CPU: 1 UID: 0 PID: 781 Comm: rcu_torture_rea Tainted: G        W       T  6.14.0-rc1-00007-gc9b55f9da0d2 #1
> [  109.553523][  T781] Tainted: [W]=WARN, [T]=RANDSTRUCT
> [  109.553524][  T781] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.2-debian-1.16.2-1 04/01/2014
> [  109.553525][  T781] EIP: rcutorture_one_extend_check+0x20d/0x267 [rcutorture]
> [  109.553530][  T781] Code: 3d fe 04 1c f1 00 75 27 25 ff ff ff 7f c6 05 fe 04 1c f1 01 50 ff 75 08 57 53 56 68 60 9f 1c f1 68 a4 74 1c f1 e8 da d3 ca a3 <0f> 0b 83 c4 1c a1 40 09 1c f1 8b 40 1c 85 c0 74 41 f6 c3 60 75 3c
> [  109.553532][  T781] EAX: 00000067 EBX: 00000060 ECX: 00000027 EDX: e89c1a00
> [  109.553533][  T781] ESI: f11c936d EDI: 00000060 EBP: 825d1d88 ESP: 825d1d54
> [  109.553535][  T781] DS: 007b ES: 007b FS: 00d8 GS: 0000 SS: 0068 EFLAGS: 00010282
> [  109.553537][  T781] CR0: 80050033 CR2: 77235000 CR3: 010c5000 CR4: 00040690
> [  109.553539][  T781] DR0: 00000000 DR1: 00000000 DR2: 00000000 DR3: 00000000
> [  109.553540][  T781] DR6: fffe0ff0 DR7: 00000400
> [  109.553541][  T781] Call Trace:
> [  109.553543][  T781]  ? show_regs+0x4c/0x52
> [  109.553545][  T781]  ? rcutorture_one_extend_check+0x20d/0x267 [rcutorture]
> [  109.553551][  T781]  ? __warn+0x9e/0x15f
> [  109.553555][  T781]  ? report_bug+0xe8/0x14a
> [  109.553558][  T781]  ? rcutorture_one_extend_check+0x20d/0x267 [rcutorture]
> [  109.553565][  T781]  ? exc_overflow+0x37/0x37
> [  109.553567][  T781]  ? handle_bug+0x3a/0x55
> [  109.553569][  T781]  ? exc_invalid_op+0x1a/0x56
> [  109.553572][  T781]  ? handle_exception+0x148/0x148
> [  109.553575][  T781]  ? osq_wait_next+0x18/0x41
> [  109.553578][  T781]  ? exc_overflow+0x37/0x37
> [  109.553580][  T781]  ? rcutorture_one_extend_check+0x20d/0x267 [rcutorture]
> [  109.553587][  T781]  ? exc_overflow+0x37/0x37
> [  109.553589][  T781]  ? rcutorture_one_extend_check+0x20d/0x267 [rcutorture]
> [  109.553599][  T781]  rcutorture_one_extend+0x3b7/0x3c1 [rcutorture]
> [  109.553610][  T781]  rcu_torture_one_read+0x21b/0x4d2 [rcutorture]
> [  109.553638][  T781]  rcu_torture_reader+0xc4/0xdbd [rcutorture]
> [  109.553646][  T781]  ? rcu_torture_one_read+0x4d2/0x4d2 [rcutorture]
> [  109.553655][  T781]  kthread+0x169/0x16e
> [  109.553658][  T781]  ? rcu_torture_read_exit_child+0x3a/0x3a [rcutorture]
> [  109.553664][  T781]  ? kthread_is_per_cpu+0x17/0x17
> [  109.553667][  T781]  ret_from_fork+0x19/0x2c
> [  109.553669][  T781]  ? kthread_is_per_cpu+0x17/0x17
> [  109.553671][  T781]  ret_from_fork_asm+0x12/0x20
> [  109.553673][  T781]  entry_INT80_32+0x108/0x108
> [  109.553679][  T781] irq event stamp: 607
> [  109.553680][  T781] hardirqs last  enabled at (613): [<94ebb6cb>] console_trylock_spinning+0x6b/0x10a
> [  109.553682][  T781] hardirqs last disabled at (618): [<94ebb691>] console_trylock_spinning+0x31/0x10a
> [  109.553684][  T781] softirqs last  enabled at (0): [<94e613c4>] copy_process+0x945/0x1a7d
> [  109.553686][  T781] softirqs last disabled at (0): [<00000000>] 0x0
> [  109.553688][  T781] ---[ end trace 0000000000000000 ]---
> [  109.634034][  T769] rcu-torture: Creating torture_shuffle task
> [  109.635952][  T782] rcu-torture: rcu_torture_stats task started
> [  109.637994][  T769] rcu-torture: Creating torture_stutter task

And rcutorture's WARN_ON() has a bug that is exposed by that change
in Kconfig option.  Does the patch shown below help?

Either way, thank you for your testing efforts!

							Thanx, Paul

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

commit bb638fe1a683316397d5517cb7d1797d70d21c86
Author: Paul E. McKenney <paulmck@kernel.org>
Date:   Wed Feb 19 08:41:11 2025 -0800

    rcutorture: Update rcutorture_one_extend_check() for lazy preemption
    
    The rcutorture_one_extend_check() function's last check assumes that
    if cur_ops->readlock_nesting() returns greater than zero, either the
    RCUTORTURE_RDR_RCU_1 or the RCUTORTURE_RDR_RCU_2 bit must be set, that
    is, there must be at least one rcu_read_lock() in effect.
    
    This works for preemptible RCU and for non-preemptible RCU running in
    a non-preemptible kernel.  But it fails for non-preemptible RCU running
    in a preemptible kernel because then RCU's cur_ops->readlock_nesting()
    function, which is rcu_torture_readlock_nesting(), will return
    the PREEMPT_MASK mask bits from preempt_count().  The result will
    be greater than zero if preemption is disabled, including by the
    RCUTORTURE_RDR_PREEMPT and RCUTORTURE_RDR_SCHED bits.
    
    This commit therefore adjusts this check to take into account the case
    fo non-preemptible RCU running in a preemptible kernel.
    
    Reported-by: kernel test robot <oliver.sang@intel.com>
    Closes: https://lore.kernel.org/oe-lkp/202502171415.8ec87c87-lkp@intel.com
    Co-developed-by: Boqun Feng <boqun.feng@gmail.com>
    Signed-off-by: Boqun Feng <boqun.feng@gmail.com>
    Co-developed-by: Joel Fernandes <joelagnelf@nvidia.com>
    Signed-off-by: Joel Fernandes <joelagnelf@nvidia.com>
    Signed-off-by: Paul E. McKenney <paulmck@kernel.org>

diff --git a/kernel/rcu/rcutorture.c b/kernel/rcu/rcutorture.c
index 895a27545ae1e..0f446ff04eda1 100644
--- a/kernel/rcu/rcutorture.c
+++ b/kernel/rcu/rcutorture.c
@@ -1981,6 +1981,8 @@ static void rcu_torture_reader_do_mbchk(long myid, struct rcu_torture *rtp,
 #define ROEC_ARGS "%s %s: Current %#x  To add %#x  To remove %#x  preempt_count() %#x\n", __func__, s, curstate, new, old, preempt_count()
 static void rcutorture_one_extend_check(char *s, int curstate, int new, int old, bool insoftirq)
 {
+	int mask;
+
 	if (!IS_ENABLED(CONFIG_RCU_TORTURE_TEST_CHK_RDR_STATE))
 		return;
 
@@ -2010,8 +2012,10 @@ static void rcutorture_one_extend_check(char *s, int curstate, int new, int old,
 	WARN_ONCE(cur_ops->extendables &&
 		  !(curstate & (RCUTORTURE_RDR_PREEMPT | RCUTORTURE_RDR_SCHED)) &&
 		  (preempt_count() & PREEMPT_MASK), ROEC_ARGS);
-	WARN_ONCE(cur_ops->readlock_nesting &&
-		  !(curstate & (RCUTORTURE_RDR_RCU_1 | RCUTORTURE_RDR_RCU_2)) &&
+	mask = RCUTORTURE_RDR_RCU_1 | RCUTORTURE_RDR_RCU_2;
+	if (IS_ENABLED(CONFIG_PREEMPT_RCU))
+		mask |= RCUTORTURE_RDR_PREEMPT | RCUTORTURE_RDR_SCHED;
+	WARN_ONCE(cur_ops->readlock_nesting && !(curstate & mask) &&
 		  cur_ops->readlock_nesting() > 0, ROEC_ARGS);
 }
diff mbox series

Patch

--- /pkg/linux/i386-randconfig-r121-20250212/gcc-12/f001b7165def8f7af6ce95d08f0e1bbc2442654d/.config    2025-02-13 07:56:33.420457682 +0800
+++ /pkg/linux/i386-randconfig-r121-20250212/gcc-12/c9b55f9da0d2c72c8c8d8cd5df84af5251b74283/.config    2025-02-13 08:43:08.186415593 +0800
@@ -147,7 +147,6 @@  CONFIG_BSD_PROCESS_ACCT=y
 # RCU Subsystem
 #
 CONFIG_TREE_RCU=y
-CONFIG_PREEMPT_RCU=y
 CONFIG_RCU_EXPERT=y
 CONFIG_TREE_SRCU=y
 CONFIG_TASKS_RCU_GENERIC=y
@@ -162,7 +161,6 @@  CONFIG_RCU_STALL_COMMON=y
 CONFIG_RCU_NEED_SEGCBLIST=y
 CONFIG_RCU_FANOUT=32
 CONFIG_RCU_FANOUT_LEAF=16
-# CONFIG_RCU_BOOST is not set
 # CONFIG_RCU_NOCB_CPU is not set
 # CONFIG_TASKS_TRACE_RCU_READ_MB is not set
 # CONFIG_RCU_DOUBLE_CHECK_CB_TIME is not set