syzbot


possible deadlock in map_mft_record

Status: upstream: reported C repro on 2022/10/19 05:29
Subsystems: ntfs (incorrect?)
Reported-by: syzbot+cb1fdea540b46f0ce394@syzkaller.appspotmail.com
First crash: 162d, last: now

Cause bisection: failed (error log, bisect log)
similar bugs (4):
Kernel Title Repro Cause bisect Fix bisect Count Last Reported Patched Status
linux-6.1 possible deadlock in map_mft_record 1 8d16h 8d16h 0/3 upstream: reported on 2023/03/21 20:17
linux-4.14 possible deadlock in map_mft_record ntfs C 5 41d 135d 0/1 upstream: reported C repro on 2022/11/15 01:41
linux-5.15 possible deadlock in map_mft_record 1 12d 12d 0/3 upstream: reported on 2023/03/17 18:38
linux-4.19 possible deadlock in map_mft_record ntfs C error 11 60d 171d 0/1 upstream: reported C repro on 2022/10/09 19:52

Sample crash report:
loop0: detected capacity change from 0 to 4096
ntfs: volume version 3.1.
======================================================
WARNING: possible circular locking dependency detected
6.2.0-syzkaller-06695-gd8ca6dbb8de7 #0 Not tainted
------------------------------------------------------
syz-executor158/5070 is trying to acquire lock:
ffff888072cf1a50 (&lcnbmp_mrec_lock_key){+.+.}-{3:3}, at: map_mft_record+0x40/0x6c0 fs/ntfs/mft.c:154

but task is already holding lock:
ffff888027f099f8 (&vol->lcnbmp_lock){+.+.}-{3:3}, at: ntfs_put_super+0x39c/0x1700 fs/ntfs/super.c:2282

which lock already depends on the new lock.


the existing dependency chain (in reverse order) is:

-> #1 (&vol->lcnbmp_lock){+.+.}-{3:3}:
       down_write+0x92/0x200 kernel/locking/rwsem.c:1573
       __ntfs_cluster_free+0x12d/0xbe0 fs/ntfs/lcnalloc.c:862
       ntfs_cluster_free fs/ntfs/lcnalloc.h:96 [inline]
       ntfs_truncate+0x16c1/0x2a50 fs/ntfs/inode.c:2695
       ntfs_truncate_vfs fs/ntfs/inode.c:2862 [inline]
       ntfs_setattr+0x397/0x560 fs/ntfs/inode.c:2914
       notify_change+0xb2c/0x1180 fs/attr.c:482
       do_truncate+0x143/0x200 fs/open.c:66
       handle_truncate fs/namei.c:3219 [inline]
       do_open fs/namei.c:3564 [inline]
       path_openat+0x2083/0x2750 fs/namei.c:3715
       do_file_open_root+0x2cc/0x590 fs/namei.c:3767
       file_open_root+0x2b1/0x430 fs/open.c:1292
       do_handle_open+0x327/0x8b0 fs/fhandle.c:232
       do_syscall_x64 arch/x86/entry/common.c:50 [inline]
       do_syscall_64+0x39/0xb0 arch/x86/entry/common.c:80
       entry_SYSCALL_64_after_hwframe+0x63/0xcd

-> #0 (&lcnbmp_mrec_lock_key){+.+.}-{3:3}:
       check_prev_add kernel/locking/lockdep.c:3098 [inline]
       check_prevs_add kernel/locking/lockdep.c:3217 [inline]
       validate_chain kernel/locking/lockdep.c:3832 [inline]
       __lock_acquire+0x2ec7/0x5d40 kernel/locking/lockdep.c:5056
       lock_acquire kernel/locking/lockdep.c:5669 [inline]
       lock_acquire+0x1e3/0x670 kernel/locking/lockdep.c:5634
       __mutex_lock_common kernel/locking/mutex.c:603 [inline]
       __mutex_lock+0x12f/0x1350 kernel/locking/mutex.c:747
       map_mft_record+0x40/0x6c0 fs/ntfs/mft.c:154
       __ntfs_write_inode+0x88/0xc40 fs/ntfs/inode.c:2978
       ntfs_commit_inode fs/ntfs/inode.h:300 [inline]
       ntfs_put_super+0xf43/0x1700 fs/ntfs/super.c:2283
       generic_shutdown_super+0x158/0x480 fs/super.c:491
       kill_block_super+0x9b/0xf0 fs/super.c:1398
       deactivate_locked_super+0x98/0x160 fs/super.c:331
       deactivate_super+0xb1/0xd0 fs/super.c:362
       cleanup_mnt+0x2ae/0x3d0 fs/namespace.c:1177
       task_work_run+0x16f/0x270 kernel/task_work.c:179
       exit_task_work include/linux/task_work.h:38 [inline]
       do_exit+0xad3/0x2a40 kernel/exit.c:869
       do_group_exit+0xd4/0x2a0 kernel/exit.c:1019
       __do_sys_exit_group kernel/exit.c:1030 [inline]
       __se_sys_exit_group kernel/exit.c:1028 [inline]
       __x64_sys_exit_group+0x3e/0x50 kernel/exit.c:1028
       do_syscall_x64 arch/x86/entry/common.c:50 [inline]
       do_syscall_64+0x39/0xb0 arch/x86/entry/common.c:80
       entry_SYSCALL_64_after_hwframe+0x63/0xcd

other info that might help us debug this:

 Possible unsafe locking scenario:

       CPU0                    CPU1
       ----                    ----
  lock(&vol->lcnbmp_lock);
                               lock(&lcnbmp_mrec_lock_key);
                               lock(&vol->lcnbmp_lock);
  lock(&lcnbmp_mrec_lock_key);

 *** DEADLOCK ***

2 locks held by syz-executor158/5070:
 #0: ffff8880293200e0 (&type->s_umount_key#46){+.+.}-{3:3}, at: deactivate_super+0xa9/0xd0 fs/super.c:361
 #1: ffff888027f099f8 (&vol->lcnbmp_lock){+.+.}-{3:3}, at: ntfs_put_super+0x39c/0x1700 fs/ntfs/super.c:2282

stack backtrace:
CPU: 1 PID: 5070 Comm: syz-executor158 Not tainted 6.2.0-syzkaller-06695-gd8ca6dbb8de7 #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/21/2023
Call Trace:
 <TASK>
 __dump_stack lib/dump_stack.c:88 [inline]
 dump_stack_lvl+0xd9/0x150 lib/dump_stack.c:106
 check_noncircular+0x25f/0x2e0 kernel/locking/lockdep.c:2178
 check_prev_add kernel/locking/lockdep.c:3098 [inline]
 check_prevs_add kernel/locking/lockdep.c:3217 [inline]
 validate_chain kernel/locking/lockdep.c:3832 [inline]
 __lock_acquire+0x2ec7/0x5d40 kernel/locking/lockdep.c:5056
 lock_acquire kernel/locking/lockdep.c:5669 [inline]
 lock_acquire+0x1e3/0x670 kernel/locking/lockdep.c:5634
 __mutex_lock_common kernel/locking/mutex.c:603 [inline]
 __mutex_lock+0x12f/0x1350 kernel/locking/mutex.c:747
 map_mft_record+0x40/0x6c0 fs/ntfs/mft.c:154
 __ntfs_write_inode+0x88/0xc40 fs/ntfs/inode.c:2978
 ntfs_commit_inode fs/ntfs/inode.h:300 [inline]
 ntfs_put_super+0xf43/0x1700 fs/ntfs/super.c:2283
 generic_shutdown_super+0x158/0x480 fs/super.c:491
 kill_block_super+0x9b/0xf0 fs/super.c:1398
 deactivate_locked_super+0x98/0x160 fs/super.c:331
 deactivate_super+0xb1/0xd0 fs/super.c:362
 cleanup_mnt+0x2ae/0x3d0 fs/namespace.c:1177
 task_work_run+0x16f/0x270 kernel/task_work.c:179
 exit_task_work include/linux/task_work.h:38 [inline]
 do_exit+0xad3/0x2a40 kernel/exit.c:869
 do_group_exit+0xd4/0x2a0 kernel/exit.c:1019
 __do_sys_exit_group kernel/exit.c:1030 [inline]
 __se_sys_exit_group kernel/exit.c:1028 [inline]
 __x64_sys_exit_group+0x3e/0x50 kernel/exit.c:1028
 do_syscall_x64 arch/x86/entry/common.c:50 [inline]
 do_syscall_64+0x39/0xb0 arch/x86/entry/common.c:80
 entry_SYSCALL_64_after_hwframe+0x63/0xcd
RIP: 0033:0x7fcf8333da29
Code: Unable to access opcode bytes at 0x7fcf8333d9ff.
RSP: 002b:00007fff4233dbf8 EFLAGS: 00000246 ORIG_RAX: 00000000000000e7
RAX: ffffffffffffffda RBX: 00007fcf833d2330 RCX: 00007fcf8333da29
RDX: 000000000000003c RSI: 00000000000000e7 RDI: 0000000000000001
RBP: 0000000000000001 R08: ffffffffffffffc0 R09: 00007fcf833cce40
R10: 000000000001f1b4 R11: 0000000000000246 R12: 00007fcf833d2330
R13: 0000000000000001 R14: 

Crashes (163):
Manager Time Kernel Commit Syzkaller Config Log Report Syz repro C repro VM info Assets Title
ci-upstream-kasan-gce-root 2023/02/23 17:42 upstream d8ca6dbb8de7 9e2ebb3c .config strace log report syz C [disk image] [vmlinux] [kernel image] [mounted in repro] possible deadlock in map_mft_record
ci2-upstream-fs 2023/01/02 03:52 upstream e4cf7c25bae5 ab32d508 .config strace log report syz C [disk image] [vmlinux] [kernel image] [mounted in repro] possible deadlock in map_mft_record
ci2-upstream-fs 2022/12/30 12:29 upstream 2258c2dc850b 44712fbc .config strace log report syz C [disk image] [vmlinux] [kernel image] [mounted in repro] possible deadlock in map_mft_record
ci-upstream-linux-next-kasan-gce-root 2023/03/25 13:17 linux-next e5dbf24e8b9e fbf0499a .config strace log report syz C [disk image] [vmlinux] [kernel image] [mounted in repro] possible deadlock in map_mft_record
ci2-upstream-fs 2023/03/30 12:36 upstream ffe78bbd5121 f325deb0 .config console log report info [disk image] [vmlinux] [kernel image] possible deadlock in map_mft_record
ci-qemu-upstream 2023/03/29 10:53 upstream fcd476ea6a88 fc067f05 .config console log report info possible deadlock in map_mft_record
ci-qemu-upstream 2023/03/29 07:35 upstream fcd476ea6a88 fc067f05 .config console log report info possible deadlock in map_mft_record
ci-qemu-upstream 2023/03/28 12:22 upstream 3a93e40326c8 48c74771 .config console log report info possible deadlock in map_mft_record
ci-qemu-upstream 2023/03/26 21:42 upstream 0ec57cfa721f fbf0499a .config console log report info possible deadlock in map_mft_record
ci-qemu-upstream 2023/03/25 14:39 upstream e76db6e50c85 fbf0499a .config console log report info possible deadlock in map_mft_record
ci2-upstream-fs 2023/03/25 11:11 upstream 65aca32efdcb fbf0499a .config console log report info [disk image] [vmlinux] [kernel image] possible deadlock in map_mft_record
ci-upstream-kasan-gce-smack-root 2023/03/25 06:34 upstream 65aca32efdcb fbf0499a .config console log report info [disk image] [vmlinux] [kernel image] possible deadlock in map_mft_record
ci2-upstream-fs 2023/03/23 11:29 upstream fff5a5e7f528 f94b4a29 .config console log report info [disk image] [vmlinux] [kernel image] possible deadlock in map_mft_record
ci-qemu-upstream 2023/03/22 18:46 upstream a1effab7a3a3 d846e076 .config console log report info possible deadlock in map_mft_record
ci-qemu-upstream 2023/03/22 08:27 upstream 2faac9a98f01 8b4eb097 .config console log report info possible deadlock in map_mft_record
ci-qemu-upstream 2023/03/22 06:07 upstream 2faac9a98f01 8b4eb097 .config console log report info possible deadlock in map_mft_record
ci-qemu-upstream 2023/03/22 02:32 upstream 2faac9a98f01 8b4eb097 .config console log report info possible deadlock in map_mft_record
ci-qemu-upstream 2023/03/21 14:35 upstream 17214b70a159 03fb9538 .config console log report info possible deadlock in map_mft_record
ci-qemu-upstream 2023/03/20 00:04 upstream a3671bd86a97 7939252e .config console log report info possible deadlock in map_mft_record
ci-qemu-upstream 2023/03/17 13:04 upstream 38e04b3e4240 18b58603 .config console log report info possible deadlock in map_mft_record
ci-qemu-upstream 2023/03/17 00:49 upstream 0ddc84d2dd43 18b58603 .config console log report info possible deadlock in map_mft_record
ci-qemu-upstream 2023/03/16 23:06 upstream 0ddc84d2dd43 18b58603 .config console log report info possible deadlock in map_mft_record
ci2-upstream-fs 2023/03/15 22:39 upstream 9c1bec9c0b08 18b58603 .config console log report info [disk image] [vmlinux] [kernel image] possible deadlock in map_mft_record
ci-qemu-upstream 2023/03/15 15:04 upstream 6015b1aca1a2 18b58603 .config console log report info possible deadlock in map_mft_record
ci-qemu-upstream 2023/03/15 09:14 upstream 6015b1aca1a2 18b58603 .config console log report info possible deadlock in map_mft_record
ci-qemu-upstream 2023/03/14 16:59 upstream fc89d7fb499b 0d5c4377 .config console log report info possible deadlock in map_mft_record
ci-qemu-upstream 2023/03/14 13:04 upstream fc89d7fb499b 0d5c4377 .config console log report info possible deadlock in map_mft_record
ci-upstream-kasan-gce-root 2023/03/01 11:47 upstream c0927a7a5391 f8902b57 .config console log report info [disk image] [vmlinux] [kernel image] possible deadlock in map_mft_record
ci-upstream-kasan-gce-selinux-root 2023/02/22 04:37 upstream 4a7d37e824f5 42a4d508 .config console log report info [disk image] [vmlinux] [kernel image] possible deadlock in map_mft_record
ci-qemu-upstream-386 2023/03/30 01:27 upstream ffe78bbd5121 f325deb0 .config console log report info possible deadlock in map_mft_record
ci-qemu-upstream-386 2023/03/30 01:27 upstream ffe78bbd5121 f325deb0 .config console log report info possible deadlock in map_mft_record
ci-qemu-upstream-386 2023/03/30 00:13 upstream ffe78bbd5121 f325deb0 .config console log report info possible deadlock in map_mft_record
ci-qemu-upstream-386 2023/03/29 22:51 upstream ffe78bbd5121 f325deb0 .config console log report info possible deadlock in map_mft_record
ci-qemu-upstream-386 2023/03/29 14:03 upstream fcd476ea6a88 f325deb0 .config console log report info possible deadlock in map_mft_record
ci-qemu-upstream-386 2023/03/27 13:27 upstream 197b6b60ae7b f8f96aa9 .config console log report info possible deadlock in map_mft_record
ci-qemu-upstream-386 2023/03/27 10:15 upstream 197b6b60ae7b f8f96aa9 .config console log report info possible deadlock in map_mft_record
ci-qemu-upstream-386 2023/03/27 00:47 upstream 18940c888c85 fbf0499a .config console log report info possible deadlock in map_mft_record
ci-qemu-upstream-386 2023/03/26 07:57 upstream da8e7da11e4b fbf0499a .config console log report info possible deadlock in map_mft_record
ci-qemu-upstream-386 2023/03/25 22:35 upstream 65aca32efdcb fbf0499a .config console log report info possible deadlock in map_mft_record
ci-qemu-upstream-386 2023/03/24 17:20 upstream 1e760fa3596e ee89d73c .config console log report info possible deadlock in map_mft_record
ci-qemu-upstream-386 2023/03/24 12:12 upstream 1e760fa3596e f94b4a29 .config console log report info possible deadlock in map_mft_record
ci-qemu-upstream-386 2023/03/22 11:28 upstream a1effab7a3a3 d846e076 .config console log report info possible deadlock in map_mft_record
ci-qemu-upstream-386 2023/03/21 02:11 upstream 7d31677bb7b1 7939252e .config console log report info possible deadlock in map_mft_record
ci-qemu-upstream-386 2023/03/19 05:37 upstream 534293368afa 7939252e .config console log report info possible deadlock in map_mft_record
ci-qemu-upstream-386 2023/03/17 06:20 upstream 0ddc84d2dd43 18b58603 .config console log report info possible deadlock in map_mft_record
ci-qemu-upstream-386 2023/03/17 04:40 upstream 0ddc84d2dd43 18b58603 .config console log report info possible deadlock in map_mft_record
ci-qemu-upstream-386 2023/03/17 02:59 upstream 0ddc84d2dd43 18b58603 .config console log report info possible deadlock in map_mft_record
ci-qemu-upstream-386 2023/03/16 16:11 upstream 9c1bec9c0b08 18b58603 .config console log report info possible deadlock in map_mft_record
ci-qemu-upstream-386 2023/03/14 23:54 upstream 4979bf866825 0d5c4377 .config console log report info possible deadlock in map_mft_record
ci-qemu-upstream-386 2023/03/14 14:12 upstream fc89d7fb499b 0d5c4377 .config console log report info possible deadlock in map_mft_record
ci-qemu-upstream-386 2023/03/14 02:25 upstream fc89d7fb499b 026e2200 .config console log report info possible deadlock in map_mft_record
ci-qemu-upstream-386 2023/03/13 19:32 upstream eeac8ede1755 026e2200 .config console log report info possible deadlock in map_mft_record
ci-upstream-gce-arm64 2023/03/17 18:35 git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux.git for-kernelci fe15c26ee26e 18b58603 .config console log report info [disk image] [vmlinux] [kernel image] possible deadlock in map_mft_record
ci-upstream-gce-arm64 2022/10/18 16:52 git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux.git for-kernelci bbed346d5a96 b31320fc .config console log report info [disk image] [vmlinux] possible deadlock in map_mft_record
* Struck through repros no longer work on HEAD.