Skip to contentSkip to conversation

TCP AO tests failing with CONFIG_PROVE_RCU_LIST

TEST Jakub Kicinski 2 participants 2 messages Oct 28, 2024

Subsystems (2)
lore
Share & tools
lore

Jakub Kicinski

author maintainer
#0 lore raw

Hi Dmitry!

We just enabled CONFIG_PROVE_RCU_LIST with commit a3e4bf7f9675 ("configs/debug: make sure PROVE_RCU_LIST=y takes effect") in net-next. Looks like TCP AO tests now splat, eg:

[   42.597861][  T235] =============================
[   42.598195][  T235] WARNING: suspicious RCU usage
[   42.598452][  T235] 6.12.0-rc4-virtme #1 Not tainted
[   42.598697][  T235] -----------------------------
[   42.598959][  T235] net/ipv4/tcp_ao.c:2232 RCU-list traversed in non-reader section!!
[   42.599319][  T235] 
[   42.599319][  T235] other info that might help us debug this:
[   42.599319][  T235] 
[   42.600044][  T235] 
[   42.600044][  T235] rcu_scheduler_active = 2, debug_locks = 1
[   42.600443][  T235] 1 lock held by bench-lookups_i/235:
[   42.600734][  T235]  #0: ffff888005bd9098 (sk_lock-AF_INET6){+.+.}-{0:0}, at: do_tcp_getsockopt+0x40b/0x2fe0
[   42.601327][  T235] 
[   42.601327][  T235] stack backtrace:
[   42.601628][  T235] CPU: 2 UID: 0 PID: 235 Comm: bench-lookups_i Not tainted 6.12.0-rc4-virtme #1
[   42.602077][  T235] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.16.3-0-ga6ed6b701f0a-prebuilt.qemu.org 04/01/2014
[   42.602605][  T235] Call Trace:
[   42.602796][  T235]  <TASK>
[   42.602930][  T235]  dump_stack_lvl+0xb0/0xd0
[   42.603178][  T235]  lockdep_rcu_suspicious+0x1ea/0x280
[   42.603426][  T235]  tcp_ao_copy_mkts_to_user+0xded/0x1050
[   42.603657][  T235]  ? __lock_acquire+0xb3f/0x1580
[   42.603917][  T235]  ? __pfx_tcp_ao_copy_mkts_to_user+0x10/0x10
[   42.604221][  T235]  ? lock_acquire.part.0+0xeb/0x330
[   42.604463][  T235]  ? __pte_offset_map_lock+0xfb/0x280
[   42.604707][  T235]  ? __pfx_lock_acquire.part.0+0x10/0x10
[   42.604947][  T235]  ? __pfx_lock_acquire.part.0+0x10/0x10
[   42.605220][  T235]  ? do_raw_spin_lock+0x131/0x270
[   42.605524][  T235]  ? __lock_acquire+0xb3f/0x1580
[   42.605796][  T235]  ? lock_acquire.part.0+0xeb/0x330
[   42.606049][  T235]  ? find_held_lock+0x2c/0x110
[   42.606300][  T235]  ? __lock_release+0x103/0x460
[   42.606545][  T235]  ? do_tcp_getsockopt+0x40b/0x2fe0
[   42.606809][  T235]  ? hlock_class+0x4e/0x130
[   42.607058][  T235]  ? mark_lock+0x38/0x3e0
[   42.607273][  T235]  ? do_tcp_getsockopt+0x10dd/0x2fe0
[   42.607508][  T235]  do_tcp_getsockopt+0x10dd/0x2fe0

https://netdev-3.bots.linux.dev/vmksft-tcp-ao-dbg/results/835822/1-bench-lookups-ipv6/stderr

#1 lore raw

Hi Jakub,

Quoted 6 lines · Jakub Kicinski

Hi Dmitry!

We just enabled CONFIG_PROVE_RCU_LIST with commit a3e4bf7f9675 ("configs/debug: make sure PROVE_RCU_LIST=y takes effect") in net-next. Looks like TCP AO tests now splat, eg:

Thanks, will take a look at this today.

Quoted 39 lines
[   42.597861][  T235] =============================
[   42.598195][  T235] WARNING: suspicious RCU usage
[   42.598452][  T235] 6.12.0-rc4-virtme #1 Not tainted
[   42.598697][  T235] -----------------------------
[   42.598959][  T235] net/ipv4/tcp_ao.c:2232 RCU-list traversed in non-reader section!!
[   42.599319][  T235]
[   42.599319][  T235] other info that might help us debug this:
[   42.599319][  T235]
[   42.600044][  T235]
[   42.600044][  T235] rcu_scheduler_active = 2, debug_locks = 1
[   42.600443][  T235] 1 lock held by bench-lookups_i/235:
[   42.600734][  T235]  #0: ffff888005bd9098 (sk_lock-AF_INET6){+.+.}-{0:0}, at: do_tcp_getsockopt+0x40b/0x2fe0
[   42.601327][  T235]
[   42.601327][  T235] stack backtrace:
[   42.601628][  T235] CPU: 2 UID: 0 PID: 235 Comm: bench-lookups_i Not tainted 6.12.0-rc4-virtme #1
[   42.602077][  T235] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.16.3-0-ga6ed6b701f0a-prebuilt.qemu.org 04/01/2014
[   42.602605][  T235] Call Trace:
[   42.602796][  T235]  <TASK>
[   42.602930][  T235]  dump_stack_lvl+0xb0/0xd0
[   42.603178][  T235]  lockdep_rcu_suspicious+0x1ea/0x280
[   42.603426][  T235]  tcp_ao_copy_mkts_to_user+0xded/0x1050
[   42.603657][  T235]  ? __lock_acquire+0xb3f/0x1580
[   42.603917][  T235]  ? __pfx_tcp_ao_copy_mkts_to_user+0x10/0x10
[   42.604221][  T235]  ? lock_acquire.part.0+0xeb/0x330
[   42.604463][  T235]  ? __pte_offset_map_lock+0xfb/0x280
[   42.604707][  T235]  ? __pfx_lock_acquire.part.0+0x10/0x10
[   42.604947][  T235]  ? __pfx_lock_acquire.part.0+0x10/0x10
[   42.605220][  T235]  ? do_raw_spin_lock+0x131/0x270
[   42.605524][  T235]  ? __lock_acquire+0xb3f/0x1580
[   42.605796][  T235]  ? lock_acquire.part.0+0xeb/0x330
[   42.606049][  T235]  ? find_held_lock+0x2c/0x110
[   42.606300][  T235]  ? __lock_release+0x103/0x460
[   42.606545][  T235]  ? do_tcp_getsockopt+0x40b/0x2fe0
[   42.606809][  T235]  ? hlock_class+0x4e/0x130
[   42.607058][  T235]  ? mark_lock+0x38/0x3e0
[   42.607273][  T235]  ? do_tcp_getsockopt+0x10dd/0x2fe0
[   42.607508][  T235]  do_tcp_getsockopt+0x10dd/0x2fe0
Quoted 1 line

https://netdev-3.bots.linux.dev/vmksft-tcp-ao-dbg/results/835822/1-bench-lookups-ipv6/stderr

Thanks,
Dmitry