syzbot


possible deadlock in ntfs_mark_rec_free

Status: upstream: reported on 2023/01/03 12:45
Labels: ntfs3 (incorrect?)
Reported-by: syzbot+f83f0dbef763c426e3cf@syzkaller.appspotmail.com
First crash: 147d, last: 2d08h
Discussions (4)
Title Replies (including bot) Last reply
[syzbot] Monthly ntfs3 report (May 2023) 0 (1) 2023/05/29 08:47
[syzbot] Monthly ntfs3 report (Apr 2023) 0 (1) 2023/04/28 08:47
[syzbot] Monthly ntfs3 report 0 (1) 2023/03/27 17:38
[syzbot] [ntfs3?] possible deadlock in ntfs_mark_rec_free 0 (1) 2023/01/03 12:45
Similar bugs (1)
Kernel Title Repro Cause bisect Fix bisect Count Last Reported Patched Status
linux-6.1 possible deadlock in ntfs_mark_rec_free 5 18d 67d 0/3 upstream: reported on 2023/03/23 23:58

Sample crash report:
======================================================
WARNING: possible circular locking dependency detected
6.4.0-rc3-syzkaller-00291-g4e893b5aa4ac #0 Not tainted
------------------------------------------------------
syz-executor.3/3000 is trying to acquire lock:
ffff88807cdc0120 (&wnd->rw_lock/1){++++}-{3:3}, at: ntfs_mark_rec_free+0x3f/0x2b0 fs/ntfs3/fsntfs.c:741

but task is already holding lock:
ffff88802fa8a5e0 (&ni->ni_lock#3){+.+.}-{3:3}, at: ni_trylock fs/ntfs3/ntfs_fs.h:1141 [inline]
ffff88802fa8a5e0 (&ni->ni_lock#3){+.+.}-{3:3}, at: ni_write_inode+0x167/0x10c0 fs/ntfs3/frecord.c:3252

which lock already depends on the new lock.


the existing dependency chain (in reverse order) is:

-> #2 (&ni->ni_lock#3){+.+.}-{3:3}:
       lock_acquire+0x1e3/0x520 kernel/locking/lockdep.c:5691
       __mutex_lock_common+0x1d8/0x2530 kernel/locking/mutex.c:603
       __mutex_lock kernel/locking/mutex.c:747 [inline]
       mutex_lock_nested+0x1b/0x20 kernel/locking/mutex.c:799
       ntfs_set_state+0x212/0x730 fs/ntfs3/fsntfs.c:945
       attr_set_size+0x3311/0x4290 fs/ntfs3/attrib.c:866
       ntfs_extend_mft+0x2fa/0x4b0 fs/ntfs3/fsntfs.c:526
       ntfs_look_free_mft+0x43d/0x10c0 fs/ntfs3/fsntfs.c:589
       ni_create_attr_list+0x9d4/0x1510 fs/ntfs3/frecord.c:873
       ni_ins_attr_ext+0x334/0xc00 fs/ntfs3/frecord.c:968
       ni_insert_attr+0x358/0x900 fs/ntfs3/frecord.c:1135
       ni_insert_resident+0xf8/0x3c0 fs/ntfs3/frecord.c:1519
       ntfs_set_ea+0xabc/0x16c0 fs/ntfs3/xattr.c:433
       ntfs_save_wsl_perm+0x14f/0x500 fs/ntfs3/xattr.c:944
       ntfs3_setattr+0x933/0xb00 fs/ntfs3/file.c:708
       notify_change+0xc8b/0xf40 fs/attr.c:483
       chown_common+0x500/0x850 fs/open.c:774
       do_fchownat+0x16d/0x240 fs/open.c:805
       __do_sys_chown fs/open.c:825 [inline]
       __se_sys_chown fs/open.c:823 [inline]
       __x64_sys_chown+0x82/0x90 fs/open.c:823
       do_syscall_x64 arch/x86/entry/common.c:50 [inline]
       do_syscall_64+0x41/0xc0 arch/x86/entry/common.c:80
       entry_SYSCALL_64_after_hwframe+0x63/0xcd

-> #1 (&ni->file.run_lock#2){++++}-{3:3}:
       lock_acquire+0x1e3/0x520 kernel/locking/lockdep.c:5691
       down_write+0x3a/0x50 kernel/locking/rwsem.c:1573
       ntfs_extend_mft+0x160/0x4b0 fs/ntfs3/fsntfs.c:510
       ntfs_look_free_mft+0x43d/0x10c0 fs/ntfs3/fsntfs.c:589
       ntfs_create_inode+0x50e/0x36e0 fs/ntfs3/inode.c:1308
       ntfs_atomic_open+0x3db/0x530 fs/ntfs3/namei.c:434
       atomic_open fs/namei.c:3355 [inline]
       lookup_open fs/namei.c:3463 [inline]
       open_last_lookups fs/namei.c:3560 [inline]
       path_openat+0x103c/0x3170 fs/namei.c:3788
       do_filp_open+0x234/0x490 fs/namei.c:3818
       do_sys_openat2+0x13f/0x500 fs/open.c:1356
       do_sys_open fs/open.c:1372 [inline]
       __do_sys_open fs/open.c:1380 [inline]
       __se_sys_open fs/open.c:1376 [inline]
       __x64_sys_open+0x225/0x270 fs/open.c:1376
       do_syscall_x64 arch/x86/entry/common.c:50 [inline]
       do_syscall_64+0x41/0xc0 arch/x86/entry/common.c:80
       entry_SYSCALL_64_after_hwframe+0x63/0xcd

-> #0 (&wnd->rw_lock/1){++++}-{3:3}:
       check_prev_add kernel/locking/lockdep.c:3108 [inline]
       check_prevs_add kernel/locking/lockdep.c:3227 [inline]
       validate_chain+0x166b/0x58e0 kernel/locking/lockdep.c:3842
       __lock_acquire+0x1295/0x2000 kernel/locking/lockdep.c:5074
       lock_acquire+0x1e3/0x520 kernel/locking/lockdep.c:5691
       down_write_nested+0x3d/0x50 kernel/locking/rwsem.c:1689
       ntfs_mark_rec_free+0x3f/0x2b0 fs/ntfs3/fsntfs.c:741
       ni_write_inode+0x516/0x10c0 fs/ntfs3/frecord.c:3348
       write_inode fs/fs-writeback.c:1456 [inline]
       __writeback_single_inode+0x69b/0xfa0 fs/fs-writeback.c:1668
       writeback_single_inode+0x21b/0x790 fs/fs-writeback.c:1724
       sync_inode_metadata+0xcc/0x130 fs/fs-writeback.c:2780
       __generic_file_fsync+0x13f/0x190 fs/libfs.c:1138
       generic_file_fsync+0x73/0xf0 fs/libfs.c:1168
       generic_write_sync include/linux/fs.h:2469 [inline]
       ntfs_file_write_iter+0x5c6/0x6d0 fs/ntfs3/file.c:1061
       do_iter_write+0x7b1/0xcb0 fs/read_write.c:860
       iter_file_splice_write+0x843/0xfe0 fs/splice.c:795
       do_splice_from fs/splice.c:873 [inline]
       direct_splice_actor+0xe7/0x1c0 fs/splice.c:1039
       splice_direct_to_actor+0x4c4/0xbd0 fs/splice.c:994
       do_splice_direct+0x283/0x3d0 fs/splice.c:1082
       do_sendfile+0x620/0xff0 fs/read_write.c:1254
       __do_sys_sendfile64 fs/read_write.c:1322 [inline]
       __se_sys_sendfile64+0x17c/0x1e0 fs/read_write.c:1308
       do_syscall_x64 arch/x86/entry/common.c:50 [inline]
       do_syscall_64+0x41/0xc0 arch/x86/entry/common.c:80
       entry_SYSCALL_64_after_hwframe+0x63/0xcd

other info that might help us debug this:

Chain exists of:
  &wnd->rw_lock/1 --> &ni->file.run_lock#2 --> &ni->ni_lock#3

 Possible unsafe locking scenario:

       CPU0                    CPU1
       ----                    ----
  lock(&ni->ni_lock#3);
                               lock(&ni->file.run_lock#2);
                               lock(&ni->ni_lock#3);
  lock(&wnd->rw_lock/1);

 *** DEADLOCK ***

3 locks held by syz-executor.3/3000:
 #0: ffff88807cdc2460 (sb_writers#22){.+.+}-{0:0}, at: do_sendfile+0x5fb/0xff0 fs/read_write.c:1253
 #1: ffff88802fa8a880 (&sb->s_type->i_mutex_key#32){+.+.}-{3:3}, at: inode_lock include/linux/fs.h:775 [inline]
 #1: ffff88802fa8a880 (&sb->s_type->i_mutex_key#32){+.+.}-{3:3}, at: __generic_file_fsync+0x9a/0x190 fs/libfs.c:1131
 #2: ffff88802fa8a5e0 (&ni->ni_lock#3){+.+.}-{3:3}, at: ni_trylock fs/ntfs3/ntfs_fs.h:1141 [inline]
 #2: ffff88802fa8a5e0 (&ni->ni_lock#3){+.+.}-{3:3}, at: ni_write_inode+0x167/0x10c0 fs/ntfs3/frecord.c:3252

stack backtrace:
CPU: 1 PID: 3000 Comm: syz-executor.3 Not tainted 6.4.0-rc3-syzkaller-00291-g4e893b5aa4ac #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 05/25/2023
Call Trace:
 <TASK>
 __dump_stack lib/dump_stack.c:88 [inline]
 dump_stack_lvl+0x1e7/0x2d0 lib/dump_stack.c:106
 check_noncircular+0x2fe/0x3b0 kernel/locking/lockdep.c:2188
 check_prev_add kernel/locking/lockdep.c:3108 [inline]
 check_prevs_add kernel/locking/lockdep.c:3227 [inline]
 validate_chain+0x166b/0x58e0 kernel/locking/lockdep.c:3842
 __lock_acquire+0x1295/0x2000 kernel/locking/lockdep.c:5074
 lock_acquire+0x1e3/0x520 kernel/locking/lockdep.c:5691
 down_write_nested+0x3d/0x50 kernel/locking/rwsem.c:1689
 ntfs_mark_rec_free+0x3f/0x2b0 fs/ntfs3/fsntfs.c:741
 ni_write_inode+0x516/0x10c0 fs/ntfs3/frecord.c:3348
 write_inode fs/fs-writeback.c:1456 [inline]
 __writeback_single_inode+0x69b/0xfa0 fs/fs-writeback.c:1668
 writeback_single_inode+0x21b/0x790 fs/fs-writeback.c:1724
 sync_inode_metadata+0xcc/0x130 fs/fs-writeback.c:2780
 __generic_file_fsync+0x13f/0x190 fs/libfs.c:1138
 generic_file_fsync+0x73/0xf0 fs/libfs.c:1168
 generic_write_sync include/linux/fs.h:2469 [inline]
 ntfs_file_write_iter+0x5c6/0x6d0 fs/ntfs3/file.c:1061
 do_iter_write+0x7b1/0xcb0 fs/read_write.c:860
 iter_file_splice_write+0x843/0xfe0 fs/splice.c:795
 do_splice_from fs/splice.c:873 [inline]
 direct_splice_actor+0xe7/0x1c0 fs/splice.c:1039
 splice_direct_to_actor+0x4c4/0xbd0 fs/splice.c:994
 do_splice_direct+0x283/0x3d0 fs/splice.c:1082
 do_sendfile+0x620/0xff0 fs/read_write.c:1254
 __do_sys_sendfile64 fs/read_write.c:1322 [inline]
 __se_sys_sendfile64+0x17c/0x1e0 fs/read_write.c:1308
 do_syscall_x64 arch/x86/entry/common.c:50 [inline]
 do_syscall_64+0x41/0xc0 arch/x86/entry/common.c:80
 entry_SYSCALL_64_after_hwframe+0x63/0xcd
RIP: 0033:0x7ff88488c169
Code: 28 00 00 00 75 05 48 83 c4 28 c3 e8 f1 19 00 00 90 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 b8 ff ff ff f7 d8 64 89 01 48
RSP: 002b:00007ff88566c168 EFLAGS: 00000246 ORIG_RAX: 0000000000000028
RAX: ffffffffffffffda RBX: 00007ff8849abf80 RCX: 00007ff88488c169
RDX: 0000000000000000 RSI: 0000000000000005 RDI: 0000000000000004
RBP: 00007ff8848e7ca1 R08: 0000000000000000 R09: 0000000000000000
R10: 0001000000201005 R11: 0000000000000246 R12: 0000000000000000
R13: 00007ffe8709838f R14: 00007ff88566c300 R15: 0000000000022000
 </TASK>

Crashes (310):
Time Kernel Commit Syzkaller Config Log Report Syz repro C repro VM info Assets Manager Title
2023/05/27 22:56 upstream 4e893b5aa4ac cf184559 .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-fs possible deadlock in ntfs_mark_rec_free
2023/05/27 19:43 upstream 49572d536129 cf184559 .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-fs possible deadlock in ntfs_mark_rec_free
2023/05/27 17:53 upstream 49572d536129 cf184559 .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-fs possible deadlock in ntfs_mark_rec_free
2023/05/27 08:46 upstream 49572d536129 cf184559 .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-fs possible deadlock in ntfs_mark_rec_free
2023/05/26 15:15 upstream 9db898594c54 b40ef614 .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-fs possible deadlock in ntfs_mark_rec_free
2023/05/26 05:18 upstream 9db898594c54 b40ef614 .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-fs possible deadlock in ntfs_mark_rec_free
2023/05/26 01:10 upstream 9db898594c54 0513b3e6 .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-fs possible deadlock in ntfs_mark_rec_free
2023/05/25 11:37 upstream 933174ae28ba 0513b3e6 .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-fs possible deadlock in ntfs_mark_rec_free
2023/05/24 14:11 upstream 9d646009f65d 4bce1a3e .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-fs possible deadlock in ntfs_mark_rec_free
2023/05/24 03:19 upstream 27e462c8fad4 4bce1a3e .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-fs possible deadlock in ntfs_mark_rec_free
2023/05/24 01:39 upstream ae8373a5add4 4bce1a3e .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-fs possible deadlock in ntfs_mark_rec_free
2023/05/23 23:03 upstream ae8373a5add4 4bce1a3e .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-fs possible deadlock in ntfs_mark_rec_free
2023/05/23 13:01 upstream ae8373a5add4 4bce1a3e .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-fs possible deadlock in ntfs_mark_rec_free
2023/05/22 16:53 upstream 44c026a73be8 4bce1a3e .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-fs possible deadlock in ntfs_mark_rec_free
2023/05/22 10:37 upstream 44c026a73be8 4bce1a3e .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-fs possible deadlock in ntfs_mark_rec_free
2023/05/21 20:24 upstream e2065b8c1b01 4bce1a3e .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-fs possible deadlock in ntfs_mark_rec_free
2023/05/21 18:16 upstream 0dd2a6fb1e34 4bce1a3e .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-fs possible deadlock in ntfs_mark_rec_free
2023/05/21 17:03 upstream 0dd2a6fb1e34 4bce1a3e .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-fs possible deadlock in ntfs_mark_rec_free
2023/05/21 15:54 upstream 0dd2a6fb1e34 4bce1a3e .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-fs possible deadlock in ntfs_mark_rec_free
2023/05/21 10:10 upstream 0dd2a6fb1e34 4bce1a3e .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-fs possible deadlock in ntfs_mark_rec_free
2023/05/20 23:27 upstream d635f6cc934b 4bce1a3e .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-fs possible deadlock in ntfs_mark_rec_free
2023/05/20 22:16 upstream d635f6cc934b 4bce1a3e .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-fs possible deadlock in ntfs_mark_rec_free
2023/05/20 10:05 upstream d635f6cc934b 96689200 .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-fs possible deadlock in ntfs_mark_rec_free
2023/05/19 14:20 upstream 2d1bcbc6cd70 3bb7af1d .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-fs possible deadlock in ntfs_mark_rec_free
2023/05/19 01:38 upstream 2d1bcbc6cd70 3bb7af1d .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-fs possible deadlock in ntfs_mark_rec_free
2023/05/18 12:03 upstream 4d6d4c7f541d 3bb7af1d .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-fs possible deadlock in ntfs_mark_rec_free
2023/05/17 21:35 upstream 1b66c114d161 3bb7af1d .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-fs possible deadlock in ntfs_mark_rec_free
2023/05/17 18:48 upstream 1b66c114d161 eaac4681 .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-fs possible deadlock in ntfs_mark_rec_free
2023/05/17 08:31 upstream f1fcbaa18b28 11c89444 .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-fs possible deadlock in ntfs_mark_rec_free
2023/05/16 01:58 upstream f1fcbaa18b28 71b00cfb .config console log report info [disk image] [vmlinux] [kernel image] ci-upstream-kasan-gce-root possible deadlock in ntfs_mark_rec_free
2023/05/15 09:56 upstream f1fcbaa18b28 c4d362e7 .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-fs possible deadlock in ntfs_mark_rec_free
2023/05/15 02:55 upstream f1fcbaa18b28 2b9ba477 .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-fs possible deadlock in ntfs_mark_rec_free
2023/05/14 23:22 upstream bb7c241fae62 2b9ba477 .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-fs possible deadlock in ntfs_mark_rec_free
2023/05/14 14:05 upstream bb7c241fae62 2b9ba477 .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-fs possible deadlock in ntfs_mark_rec_free
2023/05/14 14:00 upstream bb7c241fae62 2b9ba477 .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-fs possible deadlock in ntfs_mark_rec_free
2023/05/11 01:43 upstream d295b66a7b66 14b12a99 .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-fs possible deadlock in ntfs_mark_rec_free
2023/05/10 18:40 upstream 16a8829130ca 14b12a99 .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-fs possible deadlock in ntfs_mark_rec_free
2023/05/10 10:28 upstream 16a8829130ca 14b12a99 .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-fs possible deadlock in ntfs_mark_rec_free
2023/05/10 01:48 upstream 1dc3731daf1f 30aa2a7e .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-fs possible deadlock in ntfs_mark_rec_free
2023/05/09 19:55 upstream 1dc3731daf1f 30aa2a7e .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-fs possible deadlock in ntfs_mark_rec_free
2023/05/08 21:38 upstream ba0ad6ed89fd c7a5e2a0 .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-fs possible deadlock in ntfs_mark_rec_free
2023/05/07 03:35 upstream fc4354c6e5c2 90c93c40 .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-fs possible deadlock in ntfs_mark_rec_free
2023/05/05 16:12 upstream 78b421b6a7c6 de870ca5 .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-fs possible deadlock in ntfs_mark_rec_free
2023/05/05 07:46 upstream 3c4aa4434377 518a39a6 .config console log report info [disk image] [vmlinux] [kernel image] ci-upstream-kasan-gce-smack-root possible deadlock in ntfs_mark_rec_free
2023/05/04 12:58 upstream 1a5304fecee5 3a560463 .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-fs possible deadlock in ntfs_mark_rec_free
2023/05/03 22:40 upstream 348551ddaf31 b5918830 .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-fs possible deadlock in ntfs_mark_rec_free
2023/05/03 09:05 upstream 7df047b3f0aa 48e0a81d .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-fs possible deadlock in ntfs_mark_rec_free
2023/05/02 07:50 upstream c8c655c34e33 62df2017 .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-fs possible deadlock in ntfs_mark_rec_free
2023/05/01 21:51 upstream c8c655c34e33 62df2017 .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-fs possible deadlock in ntfs_mark_rec_free
2023/04/30 16:41 upstream 825a0714d2b3 62df2017 .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-fs possible deadlock in ntfs_mark_rec_free
2023/04/02 09:35 upstream 00c7b5f4ddc5 f325deb0 .config console log report info [disk image] [vmlinux] [kernel image] ci-upstream-kasan-gce-selinux-root possible deadlock in ntfs_mark_rec_free
2023/01/03 12:21 upstream 69b41ac87e4a d43e0eb8 .config console log report info ci-qemu-upstream possible deadlock in ntfs_mark_rec_free
2023/01/02 21:45 upstream 88603b6dc419 ab32d508 .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-fs possible deadlock in ntfs_mark_rec_free
2023/05/24 21:41 linux-next 715abedee4cd 4bce1a3e .config console log report info [disk image] [vmlinux] [kernel image] ci-upstream-linux-next-kasan-gce-root possible deadlock in ntfs_mark_rec_free
2023/05/17 00:43 linux-next 715abedee4cd 11c89444 .config console log report info [disk image] [vmlinux] [kernel image] ci-upstream-linux-next-kasan-gce-root possible deadlock in ntfs_mark_rec_free
* Struck through repros no longer work on HEAD.