On Sep 16, 2026 / 18:46, Herbert Xu wrote: > v3 removes an obsolete comment regarding the use of nesting level 2 or more. > > ---8<--- > Use separate lockdep keys for the different types of locks in > rhashtable (mutex, spin lock, and bucket locks). They are > separate and not normally nested with respect to each other. > > Also move the rhashtable_init/rhltable_init kdoc to the header > file as that's where the macros are defined. > > Fixes: 4333ab90aaae ("rhashtable: use private lockdep class for all locks.") > Reported-by: syzbot+4d0e4d2db6dfde01b52f@syzkaller.appspotmail.com > Assisted-by: Gemini:gemini-3.6-flash > Signed-off-by: Herbert Xu > Reviewed-by: NeilBrown Thank you for the fix action. I evaluated the patch. It takes very long time to reproduce the WARN with my test set, so I asked my AI to create a reproducer. The attached source file is a simple kernel module that recreates the WARN at module load. Using this module, I tried three kernels: v7.3-rc3 kernel : no WARN v7.3-rc3 kernel + 4333ab90aaae : recreated the WARN [2] v7.3-rc3 kernel + 4333ab90aaae + this v3 fix patch : no WARN The result looks good, hence, Tested-by: Shin'ichiro Kawasaki [2] WARN observed with the reproducer Sep 18 15:39:28 redsun41 kernel: ------------[ cut here ]------------ Sep 18 15:39:28 redsun41 kernel: Looking for class "&ht->mutex" with key __key.2 [nf_tables], but found a different class "key" with the same key Sep 18 15:39:28 redsun41 kernel: WARNING: kernel/locking/lockdep.c:955 at look_up_lock_class+0xa8/0x170, CPU#2: kworker/2:1/78 Sep 18 15:39:28 redsun41 kernel: Modules linked in: xt_conntrack nf_conntrack_netbios_ns nf_conntrack_broadcast bridge nft_fib_inet stp nft_fib_ipv4 llc nft_fib_ipv6 nft_fib nft_reject_inet nf_reject_ipv4 nf_reject_ipv6 nft_reject nft_ct nft_chain_nat target_core_user ip6table_nat ip6table_mangle target_core_mod ip6table_raw ip6table_security iptable_nat nf_nat nf_conntrack nf_defrag_ipv6 nf_defrag_ipv4 iptable_mangle iptable_raw iptable_security qrtr rfkill nf_tables ip6table_filter ip6_tables iptable_filter ip_tables intel_rapl_msr intel_rapl_common sb_edac x86_pkg_temp_thermal intel_powerclamp coretemp kvm_intel kvm irqbypass rapl intel_cstate iTCO_wdt intel_pmc_bxt sunrpc intel_uncore pcspkr i2c_i801 i2c_smbus igb mei_me lpc_ich mei ses enclosure ioatdma dca binfmt_misc wmi joydev acpi_pad acpi_power_meter btrfs raid6_pq xor dm_multipath zram lz4hc_compress zstd_compress ast drm_client_lib i2c_algo_bit drm_shmem_helper drm_kms_helper drm mpi3mr mpt3sas raid_class scsi_transport_sas fuse scsi_dh_rdac scsi_dh_emc scsi_dh_alua i2c_dev Sep 18 15:39:28 redsun41 kernel: CPU: 2 UID: 0 PID: 78 Comm: kworker/2:1 Not tainted 7.3.0-rc3-kts+ #85 PREEMPT(lazy) Sep 18 15:39:28 redsun41 kernel: Hardware name: Supermicro Super Server/X10SRL-F, BIOS 2.0 12/17/2015 Sep 18 15:39:28 redsun41 kernel: Workqueue: events drm_fb_helper_damage_work [drm_kms_helper] Sep 18 15:39:28 redsun41 kernel: RIP: 0010:look_up_lock_class+0xa8/0x170 Sep 18 15:39:28 redsun41 kernel: Code: 39 6b 40 75 ed 48 8b 8b b8 00 00 00 49 8b 74 24 18 48 39 f1 74 34 49 8b 14 24 48 81 fa 30 a1 92 ae 74 27 48 8d 3d d8 c5 4e 02 <67> 48 0f b9 3a 48 89 d8 48 8b 6c 24 10 4c 8b 64 24 18 48 8b 5c 24 Sep 18 15:39:28 redsun41 kernel: RSP: 0000:ffff88b77df08148 EFLAGS: 00010002 Sep 18 15:39:28 redsun41 kernel: RAX: 0000000000000001 RBX: ffffffffb2988310 RCX: ffffffffaba2e200 Sep 18 15:39:28 redsun41 kernel: RDX: ffffffffc21822a0 RSI: ffffffffaba2e180 RDI: ffffffffad913390 Sep 18 15:39:28 redsun41 kernel: RBP: ffffffffc21822a0 R08: 0000000000000001 R09: ffff8881c25a3818 Sep 18 15:39:28 redsun41 kernel: R10: 0000000000000004 R11: ffff88b77df08420 R12: ffff8881c25a11f8 Sep 18 15:39:28 redsun41 kernel: R13: 0000000000000003 R14: 0000000000000246 R15: 00000000ffffffff Sep 18 15:39:28 redsun41 kernel: FS: 0000000000000000(0000) GS:ffff88b7cf69c000(0000) knlGS:0000000000000000 Sep 18 15:39:28 redsun41 kernel: CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 Sep 18 15:39:28 redsun41 kernel: CR2: 0000000001791b40 CR3: 000000015e8e2005 CR4: 00000000001726f0 Sep 18 15:39:28 redsun41 kernel: Call Trace: Sep 18 15:39:28 redsun41 kernel: Sep 18 15:39:28 redsun41 kernel: ? ip_local_deliver+0x184/0x4a0 Sep 18 15:39:28 redsun41 kernel: match_held_lock+0xdb/0x130 Sep 18 15:39:28 redsun41 kernel: lock_is_held_type+0xb0/0x180 Sep 18 15:39:28 redsun41 kernel: nft_rhash_lookup+0x541/0x7e0 [nf_tables] Sep 18 15:39:28 redsun41 kernel: ? asm_common_interrupt+0x26/0x40 Sep 18 15:39:28 redsun41 kernel: ? lock_release.part.0+0x39/0x50 Sep 18 15:39:28 redsun41 kernel: ? lock_vma_under_rcu+0x15e/0x3e0 Sep 18 15:39:28 redsun41 kernel: ? do_user_addr_fault+0x3a6/0xf30 Sep 18 15:39:28 redsun41 kernel: ? exc_page_fault+0x98/0x140 Sep 18 15:39:28 redsun41 kernel: ? asm_exc_page_fault+0x26/0x30 Sep 18 15:39:28 redsun41 kernel: ? __pfx_nft_rhash_lookup+0x10/0x10 [nf_tables] Sep 18 15:39:28 redsun41 kernel: nft_set_do_lookup+0x1ac/0x2a0 [nf_tables] Sep 18 15:39:28 redsun41 kernel: ? rcu_read_lock_sched_held+0x40/0x70 Sep 18 15:39:28 redsun41 kernel: nft_lookup_eval+0xcc/0x590 [nf_tables] Sep 18 15:39:28 redsun41 kernel: ? lock_is_held_type+0xb0/0x180 Sep 18 15:39:28 redsun41 kernel: nft_do_chain+0x2a9/0x1680 [nf_tables] Sep 18 15:39:28 redsun41 kernel: ? update_load_avg+0x120/0x2c70 Sep 18 15:39:28 redsun41 kernel: ? __lock_acquire+0x691/0xd00 Sep 18 15:39:28 redsun41 kernel: ? __pfx_nft_do_chain+0x10/0x10 [nf_tables] Sep 18 15:39:28 redsun41 kernel: ? __local_bh_enable_ip+0xb4/0x150 Sep 18 15:39:28 redsun41 kernel: ? ipt_do_table+0xa10/0x11e0 [ip_tables] Sep 18 15:39:28 redsun41 kernel: ? ipt_do_table+0xa15/0x11e0 [ip_tables] Sep 18 15:39:28 redsun41 kernel: nft_do_chain_inet+0xdc/0x4a0 [nf_tables] Sep 18 15:39:28 redsun41 kernel: ? __pfx_nft_do_chain_inet+0x10/0x10 [nf_tables] Sep 18 15:39:28 redsun41 kernel: ? __pfx_ipt_do_table+0x10/0x10 [ip_tables] Sep 18 15:39:28 redsun41 kernel: nf_hook_slow+0xbe/0x210 Sep 18 15:39:28 redsun41 kernel: ? lock_is_held_type+0xb0/0x180 Sep 18 15:39:28 redsun41 kernel: ip_local_deliver+0x2d0/0x4a0 Sep 18 15:39:28 redsun41 kernel: ? __pfx_ip_local_deliver+0x10/0x10 Sep 18 15:39:28 redsun41 kernel: ? tcp_v4_early_demux.isra.0+0x5c4/0xb20 Sep 18 15:39:28 redsun41 kernel: ? __pfx_ip_local_deliver_finish+0x10/0x10 Sep 18 15:39:28 redsun41 kernel: ? ip_rcv_finish_core+0x75b/0x1470 Sep 18 15:39:28 redsun41 kernel: ? lock_is_held_type+0xb0/0x180 Sep 18 15:39:28 redsun41 kernel: ip_list_rcv_finish+0x815/0xbd0 Sep 18 15:39:28 redsun41 kernel: ? ip_sublist_rcv+0x106/0x2f0 Sep 18 15:39:28 redsun41 kernel: ? __pfx_ip_list_rcv_finish+0x10/0x10 Sep 18 15:39:28 redsun41 kernel: ? __lock_release.isra.0+0x69/0x1a0 Sep 18 15:39:28 redsun41 kernel: ip_sublist_rcv+0x8b/0x2f0 Sep 18 15:39:28 redsun41 kernel: ? __pfx_ip_sublist_rcv+0x10/0x10 Sep 18 15:39:28 redsun41 kernel: ? __kasan_mempool_unpoison_object+0x128/0x1c0 Sep 18 15:39:28 redsun41 kernel: ? __pfx_ip_rcv_finish+0x10/0x10 Sep 18 15:39:28 redsun41 kernel: ? ip_rcv_core+0x619/0xd00 Sep 18 15:39:28 redsun41 kernel: ? __kasan_slab_alloc+0x6a/0x90 Sep 18 15:39:28 redsun41 kernel: ip_list_rcv+0x2dd/0x440 Sep 18 15:39:28 redsun41 kernel: ? __pfx_ip_list_rcv+0x10/0x10 Sep 18 15:39:28 redsun41 kernel: ? lock_is_held_type+0xb0/0x180 Sep 18 15:39:28 redsun41 kernel: ? __lock_acquire+0x691/0xd00 Sep 18 15:39:28 redsun41 kernel: __netif_receive_skb_list_core+0x6bf/0xa10 Sep 18 15:39:28 redsun41 kernel: ? __pfx___netif_receive_skb_list_core+0x10/0x10 Sep 18 15:39:28 redsun41 kernel: ? lock_acquire.part.0+0xc8/0x240 Sep 18 15:39:28 redsun41 kernel: ? netif_receive_skb_list_internal+0x382/0xc90 Sep 18 15:39:28 redsun41 kernel: ? lock_acquire+0x11a/0x140 Sep 18 15:39:28 redsun41 kernel: netif_receive_skb_list_internal+0x603/0xc90 Sep 18 15:39:28 redsun41 kernel: ? __pfx_netif_receive_skb_list_internal+0x10/0x10 Sep 18 15:39:28 redsun41 kernel: ? igb_clean_tx_irq+0x10f1/0x17f0 [igb] Sep 18 15:39:28 redsun41 kernel: ? __pfx_igb_clean_rx_irq+0x10/0x10 [igb] Sep 18 15:39:28 redsun41 kernel: napi_complete_done+0x1a4/0x900 Sep 18 15:39:28 redsun41 kernel: ? __pfx_napi_complete_done+0x10/0x10 Sep 18 15:39:28 redsun41 kernel: ? __pfx_igb_clean_tx_irq+0x10/0x10 [igb] Sep 18 15:39:28 redsun41 kernel: ? __lock_acquire+0x691/0xd00 Sep 18 15:39:28 redsun41 kernel: igb_poll+0x18f/0x1f0 [igb] Sep 18 15:39:28 redsun41 kernel: __napi_poll+0x351/0x520 Sep 18 15:39:28 redsun41 kernel: net_rx_action+0x446/0xc30 Sep 18 15:39:28 redsun41 kernel: ? __pfx_net_rx_action+0x10/0x10 Sep 18 15:39:28 redsun41 kernel: ? do_raw_spin_unlock+0x59/0x230 Sep 18 15:39:28 redsun41 kernel: ? lock_release.part.0+0x1c/0x50 Sep 18 15:39:28 redsun41 kernel: ? sched_clock_cpu+0x69/0x630 Sep 18 15:39:28 redsun41 kernel: ? __lock_acquire+0x691/0xd00 Sep 18 15:39:28 redsun41 kernel: ? mark_held_locks+0x40/0x70 Sep 18 15:39:28 redsun41 kernel: handle_softirqs+0x1db/0x870 Sep 18 15:39:28 redsun41 kernel: ? __pfx_handle_softirqs+0x10/0x10 Sep 18 15:39:28 redsun41 kernel: ? irqtime_account_irq+0x3e/0x2d0 Sep 18 15:39:28 redsun41 kernel: __irq_exit_rcu+0x164/0x290 Sep 18 15:39:28 redsun41 kernel: irq_exit_rcu+0xe/0x20 Sep 18 15:39:28 redsun41 kernel: common_interrupt+0x85/0xa0 Sep 18 15:39:28 redsun41 kernel: Sep 18 15:39:28 redsun41 kernel: Sep 18 15:39:28 redsun41 kernel: asm_common_interrupt+0x26/0x40 Sep 18 15:39:28 redsun41 kernel: RIP: 0010:qlist_free_all+0x2e/0x130 Sep 18 15:39:28 redsun41 kernel: Code: 85 c0 0f 84 16 01 00 00 41 57 41 56 41 be 00 00 00 80 41 55 49 89 fd 41 54 49 89 f4 55 53 eb 3b 48 63 93 cc 00 00 00 48 8b 28 <48> 89 df 48 29 d0 48 89 c6 49 89 c7 e8 d1 ef ff ff 66 90 4c 89 fe Sep 18 15:39:28 redsun41 kernel: RSP: 0000:ffff88810284f848 EFLAGS: 00000246 Sep 18 15:39:28 redsun41 kernel: RAX: ffff8882958a3200 RBX: ffff8881003aec80 RCX: 0000000000000000 Sep 18 15:39:28 redsun41 kernel: RDX: 0000000000000000 RSI: 0000000000000000 RDI: ffff88810284f7e0 Sep 18 15:39:28 redsun41 kernel: RBP: ffff8882958a3f00 R08: ffff8882956f3500 R09: ffffffffa8df51ce Sep 18 15:39:28 redsun41 kernel: R10: 0000000000000000 R11: 0000000000000001 R12: 0000000000000000 Sep 18 15:39:28 redsun41 kernel: R13: ffff88810284f880 R14: 0000000080000000 R15: ffff8882956f3500 Sep 18 15:39:28 redsun41 kernel: ? qlist_free_all+0x4e/0x130 Sep 18 15:39:28 redsun41 kernel: ? qlist_free_all+0x53/0x130 Sep 18 15:39:28 redsun41 kernel: kasan_quarantine_reduce+0x19a/0x250 Sep 18 15:39:28 redsun41 kernel: __kasan_slab_alloc+0x6a/0x90 Sep 18 15:39:28 redsun41 kernel: __kmalloc_cache_noprof+0x219/0x660 Sep 18 15:39:28 redsun41 kernel: ? drm_gem_duplicate_shadow_plane_state+0x6f/0xf0 [drm_kms_helper] Sep 18 15:39:28 redsun41 kernel: drm_gem_duplicate_shadow_plane_state+0x6f/0xf0 [drm_kms_helper] Sep 18 15:39:28 redsun41 kernel: drm_atomic_get_plane_state+0x227/0x960 [drm] Sep 18 15:39:28 redsun41 kernel: ? modeset_lock+0x164/0x620 [drm] Sep 18 15:39:28 redsun41 kernel: drm_atomic_helper_dirtyfb+0x45b/0x770 [drm_kms_helper] Sep 18 15:39:28 redsun41 kernel: ? __pfx_drm_atomic_helper_dirtyfb+0x10/0x10 [drm_kms_helper] Sep 18 15:39:28 redsun41 kernel: ? find_held_lock+0x2b/0x80 Sep 18 15:39:28 redsun41 kernel: ? do_raw_spin_lock+0x131/0x280 Sep 18 15:39:28 redsun41 kernel: ? find_held_lock+0x2b/0x80 Sep 18 15:39:28 redsun41 kernel: ? mark_held_locks+0x40/0x70 Sep 18 15:39:28 redsun41 kernel: drm_fbdev_shmem_helper_fb_dirty+0x1a0/0x440 [drm_shmem_helper] Sep 18 15:39:28 redsun41 kernel: ? _raw_spin_unlock_irqrestore+0x45/0x60 Sep 18 15:39:28 redsun41 kernel: drm_fb_helper_fb_dirty+0x3fa/0xa60 [drm_kms_helper] Sep 18 15:39:28 redsun41 kernel: ? process_one_work+0x8c3/0x1760 Sep 18 15:39:28 redsun41 kernel: ? __pfx_drm_fb_helper_fb_dirty+0x10/0x10 [drm_kms_helper] Sep 18 15:39:28 redsun41 kernel: ? lock_acquire+0x11a/0x140 Sep 18 15:39:28 redsun41 kernel: process_one_work+0x947/0x1760 Sep 18 15:39:28 redsun41 kernel: ? __pfx_process_one_work+0x10/0x10 Sep 18 15:39:28 redsun41 kernel: ? lock_acquire.part.0+0xc8/0x240 Sep 18 15:39:28 redsun41 kernel: ? lock_is_held_type+0xb0/0x180 Sep 18 15:39:28 redsun41 kernel: worker_thread+0x601/0xff0 Sep 18 15:39:28 redsun41 kernel: ? __pfx_worker_thread+0x10/0x10 Sep 18 15:39:28 redsun41 kernel: ? __kthread_parkme+0xbd/0x210 Sep 18 15:39:28 redsun41 kernel: ? __pfx_worker_thread+0x10/0x10 Sep 18 15:39:28 redsun41 kernel: ? __pfx_worker_thread+0x10/0x10 Sep 18 15:39:28 redsun41 kernel: kthread+0x361/0x460 Sep 18 15:39:28 redsun41 kernel: ? __pfx_kthread+0x10/0x10 Sep 18 15:39:28 redsun41 kernel: ret_from_fork+0x560/0x860 Sep 18 15:39:28 redsun41 kernel: ? __pfx_ret_from_fork+0x10/0x10 Sep 18 15:39:28 redsun41 kernel: ? __switch_to+0x473/0xd50 Sep 18 15:39:28 redsun41 kernel: ? __switch_to_asm+0x39/0x70 Sep 18 15:39:28 redsun41 kernel: ? __switch_to_asm+0x33/0x70 Sep 18 15:39:28 redsun41 kernel: ? __pfx_kthread+0x10/0x10 Sep 18 15:39:28 redsun41 kernel: ret_from_fork_asm+0x1a/0x30 Sep 18 15:39:28 redsun41 kernel: Sep 18 15:39:28 redsun41 kernel: irq event stamp: 332632 Sep 18 15:39:28 redsun41 kernel: hardirqs last enabled at (332632): [] __local_bh_enable_ip+0xb4/0x150 Sep 18 15:39:28 redsun41 kernel: hardirqs last disabled at (332631): [] __local_bh_enable_ip+0xea/0x150 Sep 18 15:39:28 redsun41 kernel: softirqs last enabled at (332492): [] handle_softirqs+0x632/0x870 Sep 18 15:39:28 redsun41 kernel: softirqs last disabled at (332613): [] __irq_exit_rcu+0x164/0x290 Sep 18 15:39:28 redsun41 kernel: ---[ end trace 0000000000000000 ]---