====================================================== WARNING: possible circular locking dependency detected 4.15.0+ #216 Not tainted ------------------------------------------------------ syzkaller243361/4157 is trying to acquire lock: (&bdev->bd_mutex){+.+.}, at: [<000000003999265a>] blkdev_reread_part+0x1e/0x40 block/ioctl.c:192 but task is already holding lock: (&lo->lo_ctl_mutex#2){+.+.}, at: [<00000000b6ff3ea8>] lo_compat_ioctl+0x109/0x140 drivers/block/loop.c:1538 which lock already depends on the new lock. the existing dependency chain (in reverse order) is: -> #2 (&lo->lo_ctl_mutex#2){+.+.}: __mutex_lock_common kernel/locking/mutex.c:756 [inline] __mutex_lock+0x16f/0x1a80 kernel/locking/mutex.c:893 mutex_lock_nested+0x16/0x20 kernel/locking/mutex.c:908 __lo_release drivers/block/loop.c:1591 [inline] lo_release+0x85/0x190 drivers/block/loop.c:1615 __blkdev_put+0x62d/0x7f0 fs/block_dev.c:1770 blkdev_put+0x85/0x4f0 fs/block_dev.c:1835 blkdev_close+0x8b/0xb0 fs/block_dev.c:1842 __fput+0x327/0x7e0 fs/file_table.c:209 ____fput+0x15/0x20 fs/file_table.c:243 task_work_run+0x199/0x270 kernel/task_work.c:113 tracehook_notify_resume include/linux/tracehook.h:191 [inline] exit_to_usermode_loop+0x275/0x2f0 arch/x86/entry/common.c:166 prepare_exit_to_usermode arch/x86/entry/common.c:196 [inline] syscall_return_slowpath arch/x86/entry/common.c:265 [inline] do_syscall_64+0x6ed/0x940 arch/x86/entry/common.c:292 entry_SYSCALL_64_after_hwframe+0x26/0x9b -> #1 (loop_index_mutex){+.+.}: __mutex_lock_common kernel/locking/mutex.c:756 [inline] __mutex_lock+0x16f/0x1a80 kernel/locking/mutex.c:893 mutex_lock_nested+0x16/0x20 kernel/locking/mutex.c:908 lo_open+0x1b/0xa0 drivers/block/loop.c:1571 __blkdev_get+0x2f9/0x10e0 fs/block_dev.c:1454 blkdev_get+0x3a1/0xad0 fs/block_dev.c:1591 blkdev_open+0x1c9/0x250 fs/block_dev.c:1749 do_dentry_open+0x667/0xd40 fs/open.c:752 vfs_open+0x107/0x220 fs/open.c:866 do_last fs/namei.c:3378 [inline] path_openat+0x1151/0x3530 fs/namei.c:3518 do_filp_open+0x25b/0x3b0 fs/namei.c:3553 do_sys_open+0x502/0x6d0 fs/open.c:1059 SYSC_open fs/open.c:1077 [inline] SyS_open+0x2d/0x40 fs/open.c:1072 do_syscall_64+0x282/0x940 arch/x86/entry/common.c:287 entry_SYSCALL_64_after_hwframe+0x26/0x9b -> #0 (&bdev->bd_mutex){+.+.}: lock_acquire+0x1d5/0x580 kernel/locking/lockdep.c:3920 __mutex_lock_common kernel/locking/mutex.c:756 [inline] __mutex_lock+0x16f/0x1a80 kernel/locking/mutex.c:893 mutex_lock_nested+0x16/0x20 kernel/locking/mutex.c:908 blkdev_reread_part+0x1e/0x40 block/ioctl.c:192 loop_reread_partitions+0x12f/0x1a0 drivers/block/loop.c:619 loop_set_status+0x9ba/0xf60 drivers/block/loop.c:1161 loop_set_status_compat+0x9a/0x100 drivers/block/loop.c:1511 lo_compat_ioctl+0x114/0x140 drivers/block/loop.c:1539 compat_blkdev_ioctl+0x3ae/0x1840 block/compat_ioctl.c:406 C_SYSC_ioctl fs/compat_ioctl.c:1461 [inline] compat_SyS_ioctl+0x151/0x2a30 fs/compat_ioctl.c:1407 do_syscall_32_irqs_on arch/x86/entry/common.c:330 [inline] do_fast_syscall_32+0x3ee/0xfa1 arch/x86/entry/common.c:392 entry_SYSENTER_compat+0x54/0x63 arch/x86/entry/entry_64_compat.S:129 other info that might help us debug this: Chain exists of: &bdev->bd_mutex --> loop_index_mutex --> &lo->lo_ctl_mutex#2 Possible unsafe locking scenario: CPU0 CPU1 ---- ---- lock(&lo->lo_ctl_mutex#2); lock(loop_index_mutex); lock(&lo->lo_ctl_mutex#2); lock(&bdev->bd_mutex); *** DEADLOCK *** 1 lock held by syzkaller243361/4157: #0: (&lo->lo_ctl_mutex#2){+.+.}, at: [<00000000b6ff3ea8>] lo_compat_ioctl+0x109/0x140 drivers/block/loop.c:1538 stack backtrace: CPU: 1 PID: 4157 Comm: syzkaller243361 Not tainted 4.15.0+ #216 Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011 Call Trace: __dump_stack lib/dump_stack.c:17 [inline] dump_stack+0x194/0x257 lib/dump_stack.c:53 print_circular_bug.isra.38+0x2cd/0x2dc kernel/locking/lockdep.c:1223 check_prev_add kernel/locking/lockdep.c:1863 [inline] check_prevs_add kernel/locking/lockdep.c:1976 [inline] validate_chain kernel/locking/lockdep.c:2417 [inline] __lock_acquire+0x30a8/0x3e00 kernel/locking/lockdep.c:3431 lock_acquire+0x1d5/0x580 kernel/locking/lockdep.c:3920 __mutex_lock_common kernel/locking/mutex.c:756 [inline] __mutex_lock+0x16f/0x1a80 kernel/locking/mutex.c:893 mutex_lock_nested+0x16/0x20 kernel/locking/mutex.c:908 blkdev_reread_part+0x1e/0x40 block/ioctl.c:192 loop_reread_partitions+0x12f/0x1a0 drivers/block/loop.c:619 loop_set_status+0x9ba/0xf60 drivers/block/loop.c:1161 loop_set_status_compat+0x9a/0x100 drivers/block/loop.c:1511 lo_compat_ioctl+0x114/0x140 drivers/block/loop.c:1539 compat_blkdev_ioctl+0x3ae/0x1840 block/compat_ioctl.c:406 C_SYSC_ioctl fs/compat_ioctl.c:1461 [inline] compat_SyS_ioctl+0x151/0x2a30 fs/compat_ioctl.c:1407 do_syscall_32_irqs_on arch/x86/entry/common.c:330 [inline] do_fast_syscall_32+0x3ee/0xfa1 arch/x86/entry/common.c:392 entry_SYSENTER_compat+0x54/0x63 arch/x86/entry/entry_64_compat.S:129 RIP: 0023:0xf7f8dc79 RSP: 002b:00000000ff85640c EFLAGS: 00000282 ORIG_RAX: 0000000000000036 RAX: ffffffffffffffda RBX: 0000000000000006 RCX: 0000000000004c02 RDX: 0000000020a19f74 RSI: 00000000080ef00c RDI: 000000000000003f RBP: 0000000000001000 R08: 0000000000000000 R09: 0000000000000000 R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000000000 R13: 0000000000000000 R14: 0000000000000000 R15: 0000000000000000