====================================================== WARNING: possible circular locking dependency detected 5.13.0-rc5-syzkaller-00130-gf21b807c3cf8 #0 Not tainted ------------------------------------------------------ syz-executor.1/20336 is trying to acquire lock: ffff000009410c20 (&bdev->bd_mutex){+.+.}-{3:3}, at: del_gendisk+0x1d0/0x770 block/genhd.c:610 but task is already holding lock: ffff8000167abae8 (loop_ctl_mutex){+.+.}-{3:3}, at: loop_control_ioctl+0x90/0x3a0 drivers/block/loop.c:2257 which lock already depends on the new lock. the existing dependency chain (in reverse order) is: -> #1 (loop_ctl_mutex){+.+.}-{3:3}: __mutex_lock_common kernel/locking/mutex.c:959 [inline] __mutex_lock+0x128/0x940 kernel/locking/mutex.c:1104 mutex_lock_killable_nested+0x78/0x100 kernel/locking/mutex.c:1134 lo_open+0x2c/0x114 drivers/block/loop.c:1890 __blkdev_get+0x110/0x6f0 fs/block_dev.c:1311 blkdev_get_by_dev fs/block_dev.c:1451 [inline] blkdev_get_by_dev+0x160/0x4b4 fs/block_dev.c:1423 blkdev_open+0xdc/0x1ec fs/block_dev.c:1546 do_dentry_open+0x3b8/0xd9c fs/open.c:826 vfs_open+0x90/0xd0 fs/open.c:940 do_open fs/namei.c:3361 [inline] path_openat+0xfa0/0x1f90 fs/namei.c:3494 do_filp_open+0x13c/0x310 fs/namei.c:3521 do_sys_openat2+0x124/0x320 fs/open.c:1187 do_sys_open fs/open.c:1203 [inline] __do_compat_sys_openat fs/open.c:1261 [inline] __se_compat_sys_openat fs/open.c:1259 [inline] __arm64_compat_sys_openat+0x12c/0x1c0 fs/open.c:1259 __invoke_syscall arch/arm64/kernel/syscall.c:38 [inline] invoke_syscall+0x6c/0x260 arch/arm64/kernel/syscall.c:52 el0_svc_common.constprop.0+0xc4/0x1e4 arch/arm64/kernel/syscall.c:145 do_el0_svc_compat+0x40/0x80 arch/arm64/kernel/syscall.c:190 el0_svc_compat+0x24/0x3c arch/arm64/kernel/entry-common.c:483 el0_sync_compat_handler+0x90/0x140 arch/arm64/kernel/entry-common.c:492 el0_sync_compat+0x19c/0x1c0 arch/arm64/kernel/entry.S:743 -> #0 (&bdev->bd_mutex){+.+.}-{3:3}: check_prev_add kernel/locking/lockdep.c:2938 [inline] check_prevs_add kernel/locking/lockdep.c:3061 [inline] validate_chain kernel/locking/lockdep.c:3676 [inline] __lock_acquire+0x26d8/0x47b0 kernel/locking/lockdep.c:4902 lock_acquire kernel/locking/lockdep.c:5512 [inline] lock_acquire+0x5b0/0xbbc kernel/locking/lockdep.c:5477 __mutex_lock_common kernel/locking/mutex.c:959 [inline] __mutex_lock+0x128/0x940 kernel/locking/mutex.c:1104 mutex_lock_nested+0x78/0x100 kernel/locking/mutex.c:1119 del_gendisk+0x1d0/0x770 block/genhd.c:610 loop_remove drivers/block/loop.c:2191 [inline] loop_control_ioctl drivers/block/loop.c:2291 [inline] loop_control_ioctl+0x2e4/0x3a0 drivers/block/loop.c:2251 __do_compat_sys_ioctl fs/ioctl.c:1167 [inline] __se_compat_sys_ioctl fs/ioctl.c:1109 [inline] __arm64_compat_sys_ioctl+0x1d0/0x220 fs/ioctl.c:1109 __invoke_syscall arch/arm64/kernel/syscall.c:38 [inline] invoke_syscall+0x6c/0x260 arch/arm64/kernel/syscall.c:52 el0_svc_common.constprop.0+0xc4/0x1e4 arch/arm64/kernel/syscall.c:145 do_el0_svc_compat+0x40/0x80 arch/arm64/kernel/syscall.c:190 el0_svc_compat+0x24/0x3c arch/arm64/kernel/entry-common.c:483 el0_sync_compat_handler+0x90/0x140 arch/arm64/kernel/entry-common.c:492 el0_sync_compat+0x19c/0x1c0 arch/arm64/kernel/entry.S:743 other info that might help us debug this: Possible unsafe locking scenario: CPU0 CPU1 ---- ---- lock(loop_ctl_mutex); lock(&bdev->bd_mutex); lock(loop_ctl_mutex); lock(&bdev->bd_mutex); *** DEADLOCK *** 1 lock held by syz-executor.1/20336: #0: ffff8000167abae8 (loop_ctl_mutex){+.+.}-{3:3}, at: loop_control_ioctl+0x90/0x3a0 drivers/block/loop.c:2257 stack backtrace: CPU: 0 PID: 20336 Comm: syz-executor.1 Not tainted 5.13.0-rc5-syzkaller-00130-gf21b807c3cf8 #0 Hardware name: linux,dummy-virt (DT) Call trace: ptrauth_strip_insn_pac arch/arm64/include/asm/pointer_auth.h:95 [inline] dump_backtrace+0x0/0x3e0 arch/arm64/kernel/stacktrace.c:129 show_stack+0x18/0x24 arch/arm64/kernel/stacktrace.c:217 __dump_stack lib/dump_stack.c:79 [inline] dump_stack+0x120/0x1a8 lib/dump_stack.c:120 print_circular_bug+0x2d4/0x2f0 kernel/locking/lockdep.c:2007 check_noncircular+0x268/0x2e0 kernel/locking/lockdep.c:2129 check_prev_add kernel/locking/lockdep.c:2938 [inline] check_prevs_add kernel/locking/lockdep.c:3061 [inline] validate_chain kernel/locking/lockdep.c:3676 [inline] __lock_acquire+0x26d8/0x47b0 kernel/locking/lockdep.c:4902 lock_acquire kernel/locking/lockdep.c:5512 [inline] lock_acquire+0x5b0/0xbbc kernel/locking/lockdep.c:5477 __mutex_lock_common kernel/locking/mutex.c:959 [inline] __mutex_lock+0x128/0x940 kernel/locking/mutex.c:1104 mutex_lock_nested+0x78/0x100 kernel/locking/mutex.c:1119 del_gendisk+0x1d0/0x770 block/genhd.c:610 loop_remove drivers/block/loop.c:2191 [inline] loop_control_ioctl drivers/block/loop.c:2291 [inline] loop_control_ioctl+0x2e4/0x3a0 drivers/block/loop.c:2251 __do_compat_sys_ioctl fs/ioctl.c:1167 [inline] __se_compat_sys_ioctl fs/ioctl.c:1109 [inline] __arm64_compat_sys_ioctl+0x1d0/0x220 fs/ioctl.c:1109 __invoke_syscall arch/arm64/kernel/syscall.c:38 [inline] invoke_syscall+0x6c/0x260 arch/arm64/kernel/syscall.c:52 el0_svc_common.constprop.0+0xc4/0x1e4 arch/arm64/kernel/syscall.c:145 do_el0_svc_compat+0x40/0x80 arch/arm64/kernel/syscall.c:190 el0_svc_compat+0x24/0x3c arch/arm64/kernel/entry-common.c:483 el0_sync_compat_handler+0x90/0x140 arch/arm64/kernel/entry-common.c:492 el0_sync_compat+0x19c/0x1c0 arch/arm64/kernel/entry.S:743