Hello, kernel test robot noticed "WARNING:possible_recursive_locking_detected" on: commit: 01b17d53ce197777be701269395edba2fe27069a ("__dentry_kill(): new locking scheme") https://git.kernel.org/cgit/linux/kernel/git/viro/vfs.git work.dcache2 in testcase: trinity version: trinity-i386-abe9de86-1_20230429 with following parameters: runtime: 300s group: group-00 nr_groups: 5 test-description: Trinity is a linux system call fuzz tester. test-url: http://codemonkey.org.uk/projects/trinity/ compiler: gcc-11 test machine: qemu-system-x86_64 -enable-kvm -cpu SandyBridge -smp 2 -m 16G (please refer to attached dmesg/kmsg for entire log/backtrace) 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@xxxxxxxxx> | Closes: https://lore.kernel.org/oe-lkp/202311131520.ff2c101e-oliver.sang@xxxxxxxxx [ 12.984549][ T32] WARNING: possible recursive locking detected [ 12.985224][ T32] 6.6.0-00022-g01b17d53ce19 #1 Tainted: G T [ 12.985995][ T32] -------------------------------------------- [ 12.986664][ T32] kworker/u6:1/32 is trying to acquire lock: [ 12.987128][ T32] c140539c (&dentry->d_lock){+.+.}-{2:2}, at: __dentry_kill (fs/dcache.c:547 fs/dcache.c:616) [ 12.987128][ T32] [ 12.987128][ T32] but task is already holding lock: [ 12.987128][ T32] c1402084 (&dentry->d_lock){+.+.}-{2:2}, at: __dentry_kill (include/linux/spinlock.h:351 fs/dcache.c:615) [ 12.987128][ T32] [ 12.987128][ T32] other info that might help us debug this: [ 12.987128][ T32] Possible unsafe locking scenario: [ 12.987128][ T32] [ 12.987128][ T32] CPU0 [ 12.987128][ T32] ---- [ 12.987128][ T32] lock(&dentry->d_lock); [ 12.987128][ T32] [ 12.987128][ T32] *** DEADLOCK *** [ 12.987128][ T32] [ 12.987128][ T32] May be due to missing lock nesting notation [ 12.987128][ T32] [ 12.987128][ T32] 3 locks held by kworker/u6:1/32: [ 12.987128][ T32] #0: c12cb2b8 ((wq_completion)events_unbound){+.+.}-{0:0}, at: process_one_work (arch/x86/include/asm/atomic.h:28 include/linux/atomic/atomic-arch-fallback.h:490 include/linux/atomic/atomic-long.h:81 include/linux/atomic/atomic-instrumented.h:3196 kernel/workqueue.c:669 kernel/workqueue.c:696 kernel/workqueue.c:2600) [ 12.987128][ T32] #1: c1ac3f20 ((work_completion)(&entry->work)){+.+.}-{0:0}, at: process_one_work (arch/x86/include/asm/atomic.h:28 include/linux/atomic/atomic-arch-fallback.h:490 include/linux/atomic/atomic-long.h:81 include/linux/atomic/atomic-instrumented.h:3196 kernel/workqueue.c:669 kernel/workqueue.c:696 kernel/workqueue.c:2600) [ 12.987128][ T32] #2: c1402084 (&dentry->d_lock){+.+.}-{2:2}, at: __dentry_kill (include/linux/spinlock.h:351 fs/dcache.c:615) [ 12.987128][ T32] [ 12.987128][ T32] stack backtrace: [ 12.987128][ T32] CPU: 1 PID: 32 Comm: kworker/u6:1 Tainted: G T 6.6.0-00022-g01b17d53ce19 #1 330148d6df35f2d99e64624286ad750c7614ad4a [ 12.987128][ T32] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.2-debian-1.16.2-1 04/01/2014 [ 12.987128][ T32] Workqueue: events_unbound async_run_entry_fn [ 12.987128][ T32] Call Trace: [ 12.987128][ T32] dump_stack_lvl (lib/dump_stack.c:107) [ 12.987128][ T32] dump_stack (lib/dump_stack.c:114) [ 12.987128][ T32] print_deadlock_bug (kernel/locking/lockdep.c:3013) [ 12.987128][ T32] validate_chain (kernel/locking/lockdep.c:3858) [ 12.987128][ T32] __lock_acquire (kernel/locking/lockdep.c:5136) [ 12.987128][ T32] lock_acquire (kernel/locking/lockdep.c:467 kernel/locking/lockdep.c:5755) [ 12.987128][ T32] ? __dentry_kill (fs/dcache.c:547 fs/dcache.c:616) [ 12.987128][ T32] _raw_spin_lock (include/linux/spinlock_api_smp.h:134 kernel/locking/spinlock.c:154) [ 12.987128][ T32] ? __dentry_kill (fs/dcache.c:547 fs/dcache.c:616) [ 12.987128][ T32] __dentry_kill (fs/dcache.c:547 fs/dcache.c:616) [ 12.987128][ T32] dput (fs/dcache.c:1990) [ 12.987128][ T32] ? dput (fs/dcache.c:836) [ 12.987128][ T32] dput (fs/dcache.c:858) [ 12.987128][ T32] step_into (fs/namei.c:1556 fs/namei.c:1840) [ 12.987128][ T32] ? walk_component (fs/namei.c:2003) [ 12.987128][ T32] walk_component (fs/namei.c:2008) [ 12.987128][ T32] path_lookupat (fs/namei.c:2482) [ 12.987128][ T32] filename_lookup (fs/namei.c:2513) [ 12.987128][ T32] kern_path (fs/namei.c:2610) [ 12.987128][ T32] init_stat (fs/init.c:133) [ 12.987128][ T32] clean_path (init/initramfs.c:333) [ 12.987128][ T32] do_name (init/initramfs.c:366) [ 12.987128][ T32] unpack_to_rootfs (init/initramfs.c:451 init/initramfs.c:504) [ 12.987128][ T32] ? kvm_clock_get_cycles (arch/x86/include/asm/preempt.h:85 arch/x86/kernel/kvmclock.c:80 arch/x86/kernel/kvmclock.c:86) [ 12.987128][ T32] do_populate_rootfs (init/initramfs.c:693) [ 12.987128][ T32] ? process_one_work (arch/x86/include/asm/atomic.h:28 include/linux/atomic/atomic-arch-fallback.h:490 include/linux/atomic/atomic-long.h:81 include/linux/atomic/atomic-instrumented.h:3196 kernel/workqueue.c:669 kernel/workqueue.c:696 kernel/workqueue.c:2600) [ 12.987128][ T32] async_run_entry_fn (kernel/async.c:129 (discriminator 5)) [ 12.987128][ T32] process_one_work (arch/x86/include/asm/atomic.h:23 include/linux/atomic/atomic-arch-fallback.h:444 include/linux/jump_label.h:260 include/linux/jump_label.h:270 include/trace/events/workqueue.h:108 kernel/workqueue.c:2635) [ 12.987128][ T32] ? process_one_work (arch/x86/include/asm/atomic.h:28 include/linux/atomic/atomic-arch-fallback.h:490 include/linux/atomic/atomic-long.h:81 include/linux/atomic/atomic-instrumented.h:3196 kernel/workqueue.c:669 kernel/workqueue.c:696 kernel/workqueue.c:2600) [ 12.987128][ T32] worker_thread (kernel/workqueue.c:2697 kernel/workqueue.c:2784) [ 12.987128][ T32] ? rescuer_thread (kernel/workqueue.c:2730) [ 12.987128][ T32] kthread (kernel/kthread.c:388) [ 12.987128][ T32] ? rescuer_thread (kernel/workqueue.c:2730) [ 12.987128][ T32] ? kthread_complete_and_exit (kernel/kthread.c:341) [ 12.987128][ T32] ret_from_fork (arch/x86/kernel/process.c:153) [ 12.987128][ T32] ? kthread_complete_and_exit (kernel/kthread.c:341) [ 12.987128][ T32] ret_from_fork_asm (arch/x86/entry/entry_32.S:741) [ 12.987128][ T32] entry_INT80_32 (arch/x86/entry/entry_32.S:944) [ 13.024050][ T32] Trying to unpack rootfs image as initramfs... [ 15.772392][ T32] Freeing initrd memory: 128724K [ 15.773782][ T1] RAPL PMU: API unit is 2^-32 Joules, 0 fixed counters, 10737418240 ms ovfl timer The kernel config and materials to reproduce are available at: https://download.01.org/0day-ci/archive/20231113/202311131520.ff2c101e-oliver.sang@xxxxxxxxx -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki