syzbot


possible deadlock in ntfs_read_folio

Status: upstream: reported C repro on 2022/10/01 13:48
Labels: ntfs (incorrect?)
Reported-by: syzbot+8ef76b0b1f86c382ad37@syzkaller.appspotmail.com
First crash: 248d, last: 5h38m

Cause bisection: the issue happens on the oldest tested release (bisect log)
Crash: possible deadlock in ntfs_readpage (log)
Repro: C syz .config
Discussions (4)
Title Replies (including bot) Last reply
[syzbot] Monthly ntfs report (Jun 2023) 0 (1) 2023/06/02 08:40
[syzbot] Monthly ntfs report (May 2023) 0 (1) 2023/05/02 07:18
[syzbot] Monthly ntfs report 0 (1) 2023/03/31 15:00
[syzbot] possible deadlock in ntfs_read_folio 0 (1) 2022/10/01 13:48
Similar bugs (1)
Kernel Title Repro Cause bisect Fix bisect Count Last Reported Patched Status
linux-6.1 possible deadlock in ntfs_read_folio origin:upstream C 21 2d22h 80d 0/3 upstream: reported C repro on 2023/03/14 17:51

Sample crash report:
======================================================
WARNING: possible circular locking dependency detected
6.4.0-rc4-syzkaller-00047-gafead42fdfca #0 Not tainted
------------------------------------------------------
kworker/u4:1/6128 is trying to acquire lock:
ffff88805d1e0940 (&rl->lock){++++}-{3:3}, at: ntfs_read_block fs/ntfs/aops.c:248 [inline]
ffff88805d1e0940 (&rl->lock){++++}-{3:3}, at: ntfs_read_folio+0x14d5/0x29f0 fs/ntfs/aops.c:436

but task is already holding lock:
ffff88805d1e4bd0 (&ni->mrec_lock){+.+.}-{3:3}, at: map_mft_record+0x4c/0x630 fs/ntfs/mft.c:154

which lock already depends on the new lock.


the existing dependency chain (in reverse order) is:

-> #1 (&ni->mrec_lock){+.+.}-{3:3}:
       lock_acquire+0x1e3/0x520 kernel/locking/lockdep.c:5705
       __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
       map_mft_record+0x4c/0x630 fs/ntfs/mft.c:154
       ntfs_attr_extend_allocation+0x539/0x4340 fs/ntfs/attrib.c:2002
       ntfs_prepare_file_for_write fs/ntfs/file.c:391 [inline]
       ntfs_file_write_iter+0x3ad/0x1a00 fs/ntfs/file.c:1915
       call_write_iter include/linux/fs.h:1868 [inline]
       new_sync_write fs/read_write.c:491 [inline]
       vfs_write+0x790/0xb20 fs/read_write.c:584
       ksys_write+0x1a0/0x2c0 fs/read_write.c:637
       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 (&rl->lock){++++}-{3:3}:
       check_prev_add kernel/locking/lockdep.c:3113 [inline]
       check_prevs_add kernel/locking/lockdep.c:3232 [inline]
       validate_chain+0x166b/0x58f0 kernel/locking/lockdep.c:3847
       __lock_acquire+0x1316/0x2070 kernel/locking/lockdep.c:5088
       lock_acquire+0x1e3/0x520 kernel/locking/lockdep.c:5705
       down_read+0x47/0x2f0 kernel/locking/rwsem.c:1520
       ntfs_read_block fs/ntfs/aops.c:248 [inline]
       ntfs_read_folio+0x14d5/0x29f0 fs/ntfs/aops.c:436
       filemap_read_folio+0x19d/0x7a0 mm/filemap.c:2421
       do_read_cache_folio+0x134/0x820 mm/filemap.c:3680
       do_read_cache_page+0x32/0x220 mm/filemap.c:3746
       read_mapping_page include/linux/pagemap.h:772 [inline]
       ntfs_map_page fs/ntfs/aops.h:75 [inline]
       ntfs_sync_mft_mirror+0x25f/0x1ae0 fs/ntfs/mft.c:480
       write_mft_record_nolock+0x1155/0x18e0 fs/ntfs/mft.c:787
       write_mft_record+0x149/0x310 fs/ntfs/mft.h:95
       __ntfs_write_inode+0x703/0xbb0 fs/ntfs/inode.c:3050
       write_inode fs/fs-writeback.c:1456 [inline]
       __writeback_single_inode+0x69b/0xfa0 fs/fs-writeback.c:1668
       writeback_sb_inodes+0x8e3/0x11d0 fs/fs-writeback.c:1894
       wb_writeback+0x458/0xc70 fs/fs-writeback.c:2068
       wb_do_writeback fs/fs-writeback.c:2211 [inline]
       wb_workfn+0x400/0xff0 fs/fs-writeback.c:2251
       process_one_work+0x8a0/0x10e0 kernel/workqueue.c:2405
       worker_thread+0xa63/0x1210 kernel/workqueue.c:2552
       kthread+0x2b8/0x350 kernel/kthread.c:379
       ret_from_fork+0x1f/0x30 arch/x86/entry/entry_64.S:308

other info that might help us debug this:

 Possible unsafe locking scenario:

       CPU0                    CPU1
       ----                    ----
  lock(&ni->mrec_lock);
                               lock(&rl->lock);
                               lock(&ni->mrec_lock);
  rlock(&rl->lock);

 *** DEADLOCK ***

3 locks held by kworker/u4:1/6128:
 #0: ffff888145e75938 ((wq_completion)writeback){+.+.}-{0:0}, at: process_one_work+0x77e/0x10e0 kernel/workqueue.c:2378
 #1: ffffc9000389fd20 ((work_completion)(&(&wb->dwork)->work)){+.+.}-{0:0}, at: process_one_work+0x7c8/0x10e0 kernel/workqueue.c:2380
 #2: ffff88805d1e4bd0 (&ni->mrec_lock){+.+.}-{3:3}, at: map_mft_record+0x4c/0x630 fs/ntfs/mft.c:154

stack backtrace:
CPU: 0 PID: 6128 Comm: kworker/u4:1 Not tainted 6.4.0-rc4-syzkaller-00047-gafead42fdfca #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 05/25/2023
Workqueue: writeback wb_workfn (flush-7:0)
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:3113 [inline]
 check_prevs_add kernel/locking/lockdep.c:3232 [inline]
 validate_chain+0x166b/0x58f0 kernel/locking/lockdep.c:3847
 __lock_acquire+0x1316/0x2070 kernel/locking/lockdep.c:5088
 lock_acquire+0x1e3/0x520 kernel/locking/lockdep.c:5705
 down_read+0x47/0x2f0 kernel/locking/rwsem.c:1520
 ntfs_read_block fs/ntfs/aops.c:248 [inline]
 ntfs_read_folio+0x14d5/0x29f0 fs/ntfs/aops.c:436
 filemap_read_folio+0x19d/0x7a0 mm/filemap.c:2421
 do_read_cache_folio+0x134/0x820 mm/filemap.c:3680
 do_read_cache_page+0x32/0x220 mm/filemap.c:3746
 read_mapping_page include/linux/pagemap.h:772 [inline]
 ntfs_map_page fs/ntfs/aops.h:75 [inline]
 ntfs_sync_mft_mirror+0x25f/0x1ae0 fs/ntfs/mft.c:480
 write_mft_record_nolock+0x1155/0x18e0 fs/ntfs/mft.c:787
 write_mft_record+0x149/0x310 fs/ntfs/mft.h:95
 __ntfs_write_inode+0x703/0xbb0 fs/ntfs/inode.c:3050
 write_inode fs/fs-writeback.c:1456 [inline]
 __writeback_single_inode+0x69b/0xfa0 fs/fs-writeback.c:1668
 writeback_sb_inodes+0x8e3/0x11d0 fs/fs-writeback.c:1894
 wb_writeback+0x458/0xc70 fs/fs-writeback.c:2068
 wb_do_writeback fs/fs-writeback.c:2211 [inline]
 wb_workfn+0x400/0xff0 fs/fs-writeback.c:2251
 process_one_work+0x8a0/0x10e0 kernel/workqueue.c:2405
 worker_thread+0xa63/0x1210 kernel/workqueue.c:2552
 kthread+0x2b8/0x350 kernel/kthread.c:379
 ret_from_fork+0x1f/0x30 arch/x86/entry/entry_64.S:308
 </TASK>

Crashes (2446):
Time Kernel Commit Syzkaller Config Log Report Syz repro C repro VM info Assets Manager Title
2023/05/31 10:13 upstream afead42fdfca 09898419 .config console log report syz C [disk image] [vmlinux] [kernel image] [mounted in repro] ci-upstream-kasan-gce-smack-root possible deadlock in ntfs_read_folio
2023/05/19 18:58 upstream 2d1bcbc6cd70 3bb7af1d .config strace log report syz C [disk image] [vmlinux] [kernel image] [mounted in repro] ci-upstream-kasan-gce-smack-root possible deadlock in ntfs_read_folio
2023/05/04 09:28 upstream 89b7fd5d7f3c b5918830 .config strace log report syz C [disk image] [vmlinux] [kernel image] [mounted in repro] ci-upstream-kasan-gce-smack-root possible deadlock in ntfs_read_folio
2023/05/03 19:20 upstream 348551ddaf31 b5918830 .config strace log report syz C [disk image] [vmlinux] [kernel image] [mounted in repro] ci-upstream-kasan-gce-smack-root possible deadlock in ntfs_read_folio
2023/04/01 23:07 upstream 7b50567bdcad f325deb0 .config strace log report syz C [disk image] [vmlinux] [kernel image] [mounted in repro] ci2-upstream-fs possible deadlock in ntfs_read_folio
2023/03/24 04:06 upstream 9fd6ba5420ba f94b4a29 .config strace log report syz C [disk image] [vmlinux] [kernel image] [mounted in repro] ci2-upstream-fs possible deadlock in ntfs_read_folio
2023/03/18 09:33 upstream 478a351ce0d6 7939252e .config strace log report syz C [disk image] [vmlinux] [kernel image] [mounted in repro] ci2-upstream-fs possible deadlock in ntfs_read_folio
2023/03/18 08:40 upstream 8d3c682a5e3d 7939252e .config strace log report syz C [disk image] [vmlinux] [kernel image] [mounted in repro] ci-upstream-kasan-gce-smack-root possible deadlock in ntfs_read_folio
2023/03/02 12:50 upstream ee3f96b16468 f8902b57 .config strace log report syz C [disk image] [vmlinux] [kernel image] [mounted in repro] ci2-upstream-fs possible deadlock in ntfs_read_folio
2023/01/14 01:54 upstream d9fc1511728c 529798b0 .config console log report syz C [disk image] [vmlinux] [kernel image] [mounted in repro] ci-upstream-kasan-gce-root possible deadlock in ntfs_read_folio
2022/12/26 09:35 upstream 1b929c02afd3 9da18ae8 .config console log report syz C [disk image] [vmlinux] [kernel image] [mounted in repro] ci-upstream-kasan-gce-root possible deadlock in ntfs_read_folio
2022/12/25 09:23 upstream 72a85e2b0a1e 9da18ae8 .config strace log report syz C [disk image] [vmlinux] [kernel image] [mounted in repro] ci-upstream-kasan-gce-root possible deadlock in ntfs_read_folio
2022/09/29 00:52 upstream 49c13ed0316d e2556bc3 .config strace log report syz C ci-upstream-kasan-gce-root possible deadlock in ntfs_read_folio
2023/01/21 20:06 linux-next d514392f17fd 559a440a .config strace log report syz C [disk image] [vmlinux] [kernel image] [mounted in repro] ci-upstream-linux-next-kasan-gce-root possible deadlock in ntfs_read_folio
2023/01/21 14:20 linux-next d514392f17fd 559a440a .config strace log report syz C [disk image] [vmlinux] [kernel image] [mounted in repro] ci-upstream-linux-next-kasan-gce-root possible deadlock in ntfs_read_folio
2023/01/06 20:50 linux-next cc3c08b41a9c 1dac8c7a .config strace log report syz C [disk image] [vmlinux] [kernel image] [mounted in repro] ci-upstream-linux-next-kasan-gce-root possible deadlock in ntfs_read_folio
2023/03/24 06:12 git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux.git for-kernelci fe15c26ee26e f94b4a29 .config console log report syz C [disk image] [vmlinux] [kernel image] [mounted in repro] ci-upstream-gce-arm64 possible deadlock in ntfs_read_folio
2023/06/02 13:34 upstream 9e87b63ed37e a4ae4f42 .config console log report info [disk image (non-bootable)] [vmlinux] [kernel image] ci-qemu-upstream possible deadlock in ntfs_read_folio
2023/06/01 23:44 upstream 1874a42a7d74 a4ae4f42 .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-fs possible deadlock in ntfs_read_folio
2023/05/31 23:16 upstream 48b1320a674e e2a77acd .config console log report info [disk image (non-bootable)] [vmlinux] [kernel image] ci-qemu-upstream possible deadlock in ntfs_read_folio
2023/05/30 08:11 upstream 8b817fded42d 8d5c7541 .config console log report info [disk image] [vmlinux] [kernel image] ci-upstream-kasan-gce-root possible deadlock in ntfs_read_folio
2023/05/29 20:45 upstream 8b817fded42d cf184559 .config console log report info [disk image] [vmlinux] [kernel image] ci-upstream-kasan-gce-smack-root possible deadlock in ntfs_read_folio
2023/05/29 18:52 upstream 8b817fded42d cf184559 .config console log report info [disk image] [vmlinux] [kernel image] ci2-upstream-fs possible deadlock in ntfs_read_folio
2023/05/26 13:55 upstream 9db898594c54 b40ef614 .config console log report info [disk image] [vmlinux] [kernel image] ci-upstream-kasan-gce-selinux-root possible deadlock in ntfs_read_folio
2023/06/02 16:01 upstream 9e87b63ed37e a4ae4f42 .config console log report info [disk image (non-bootable)] [vmlinux] [kernel image] ci-qemu-upstream-386 possible deadlock in ntfs_read_folio
2023/06/02 14:49 upstream 9e87b63ed37e a4ae4f42 .config console log report info [disk image (non-bootable)] [vmlinux] [kernel image] ci-qemu-upstream-386 possible deadlock in ntfs_read_folio
2023/06/02 14:37 upstream 9e87b63ed37e a4ae4f42 .config console log report info [disk image (non-bootable)] [vmlinux] [kernel image] ci-qemu-upstream-386 possible deadlock in ntfs_read_folio
2023/06/02 12:18 upstream 9e87b63ed37e a4ae4f42 .config console log report info [disk image (non-bootable)] [vmlinux] [kernel image] ci-qemu-upstream-386 possible deadlock in ntfs_read_folio
2023/06/02 11:10 upstream 9e87b63ed37e a4ae4f42 .config console log report info [disk image (non-bootable)] [vmlinux] [kernel image] ci-qemu-upstream-386 possible deadlock in ntfs_read_folio
2023/06/02 09:56 upstream 1874a42a7d74 a4ae4f42 .config console log report info [disk image (non-bootable)] [vmlinux] [kernel image] ci-qemu-upstream-386 possible deadlock in ntfs_read_folio
2023/06/02 07:09 upstream 1874a42a7d74 a4ae4f42 .config console log report info [disk image (non-bootable)] [vmlinux] [kernel image] ci-qemu-upstream-386 possible deadlock in ntfs_read_folio
2023/06/02 03:23 upstream 1874a42a7d74 a4ae4f42 .config console log report info [disk image (non-bootable)] [vmlinux] [kernel image] ci-qemu-upstream-386 possible deadlock in ntfs_read_folio
2023/06/02 02:00 upstream 1874a42a7d74 a4ae4f42 .config console log report info [disk image (non-bootable)] [vmlinux] [kernel image] ci-qemu-upstream-386 possible deadlock in ntfs_read_folio
2023/06/01 22:51 upstream 1874a42a7d74 a4ae4f42 .config console log report info [disk image (non-bootable)] [vmlinux] [kernel image] ci-qemu-upstream-386 possible deadlock in ntfs_read_folio
2023/06/01 18:59 upstream 929ed21dfdb6 a4ae4f42 .config console log report info [disk image (non-bootable)] [vmlinux] [kernel image] ci-qemu-upstream-386 possible deadlock in ntfs_read_folio
2023/06/01 17:42 upstream 929ed21dfdb6 a4ae4f42 .config console log report info [disk image (non-bootable)] [vmlinux] [kernel image] ci-qemu-upstream-386 possible deadlock in ntfs_read_folio
2023/06/01 16:36 upstream 929ed21dfdb6 a4ae4f42 .config console log report info [disk image (non-bootable)] [vmlinux] [kernel image] ci-qemu-upstream-386 possible deadlock in ntfs_read_folio
2023/06/01 15:12 upstream 929ed21dfdb6 a4ae4f42 .config console log report info [disk image (non-bootable)] [vmlinux] [kernel image] ci-qemu-upstream-386 possible deadlock in ntfs_read_folio
2023/06/01 08:30 upstream 929ed21dfdb6 babc4389 .config console log report info [disk image (non-bootable)] [vmlinux] [kernel image] ci-qemu-upstream-386 possible deadlock in ntfs_read_folio
2023/06/01 06:11 upstream 929ed21dfdb6 babc4389 .config console log report info [disk image (non-bootable)] [vmlinux] [kernel image] ci-qemu-upstream-386 possible deadlock in ntfs_read_folio
2023/06/01 05:59 upstream 929ed21dfdb6 babc4389 .config console log report info [disk image (non-bootable)] [vmlinux] [kernel image] ci-qemu-upstream-386 possible deadlock in ntfs_read_folio
2023/06/01 04:37 upstream 929ed21dfdb6 babc4389 .config console log report info [disk image (non-bootable)] [vmlinux] [kernel image] ci-qemu-upstream-386 possible deadlock in ntfs_read_folio
2023/06/01 03:21 upstream 929ed21dfdb6 babc4389 .config console log report info [disk image (non-bootable)] [vmlinux] [kernel image] ci-qemu-upstream-386 possible deadlock in ntfs_read_folio
2023/05/31 20:38 upstream 48b1320a674e e2a77acd .config console log report info [disk image (non-bootable)] [vmlinux] [kernel image] ci-qemu-upstream-386 possible deadlock in ntfs_read_folio
2023/05/31 17:34 upstream 48b1320a674e e2a77acd .config console log report info [disk image (non-bootable)] [vmlinux] [kernel image] ci-qemu-upstream-386 possible deadlock in ntfs_read_folio
2023/05/31 15:39 upstream 48b1320a674e e2a77acd .config console log report info [disk image (non-bootable)] [vmlinux] [kernel image] ci-qemu-upstream-386 possible deadlock in ntfs_read_folio
2023/05/31 13:07 upstream 48b1320a674e 09898419 .config console log report info [disk image (non-bootable)] [vmlinux] [kernel image] ci-qemu-upstream-386 possible deadlock in ntfs_read_folio
2023/05/31 06:04 upstream afead42fdfca 09898419 .config console log report info [disk image (non-bootable)] [vmlinux] [kernel image] ci-qemu-upstream-386 possible deadlock in ntfs_read_folio
2023/05/31 02:14 upstream afead42fdfca 09898419 .config console log report info [disk image (non-bootable)] [vmlinux] [kernel image] ci-qemu-upstream-386 possible deadlock in ntfs_read_folio
2023/05/31 01:14 upstream afead42fdfca 09898419 .config console log report info [disk image (non-bootable)] [vmlinux] [kernel image] ci-qemu-upstream-386 possible deadlock in ntfs_read_folio
2023/05/31 00:05 upstream afead42fdfca 09898419 .config console log report info [disk image (non-bootable)] [vmlinux] [kernel image] ci-qemu-upstream-386 possible deadlock in ntfs_read_folio
2023/05/30 19:53 upstream 8b817fded42d 09898419 .config console log report info [disk image (non-bootable)] [vmlinux] [kernel image] ci-qemu-upstream-386 possible deadlock in ntfs_read_folio
2023/05/30 17:55 upstream 8b817fded42d 8d5c7541 .config console log report info [disk image (non-bootable)] [vmlinux] [kernel image] ci-qemu-upstream-386 possible deadlock in ntfs_read_folio
2023/05/30 16:30 upstream 8b817fded42d 8d5c7541 .config console log report info [disk image (non-bootable)] [vmlinux] [kernel image] ci-qemu-upstream-386 possible deadlock in ntfs_read_folio
2023/05/30 15:07 upstream 8b817fded42d 8d5c7541 .config console log report info [disk image (non-bootable)] [vmlinux] [kernel image] ci-qemu-upstream-386 possible deadlock in ntfs_read_folio
2023/05/30 10:49 upstream 8b817fded42d 8d5c7541 .config console log report info [disk image (non-bootable)] [vmlinux] [kernel image] ci-qemu-upstream-386 possible deadlock in ntfs_read_folio
2023/05/30 09:40 upstream 8b817fded42d 8d5c7541 .config console log report info [disk image (non-bootable)] [vmlinux] [kernel image] ci-qemu-upstream-386 possible deadlock in ntfs_read_folio
2023/05/30 06:07 upstream 8b817fded42d cf184559 .config console log report info [disk image (non-bootable)] [vmlinux] [kernel image] ci-qemu-upstream-386 possible deadlock in ntfs_read_folio
2023/05/29 22:05 upstream 8b817fded42d cf184559 .config console log report info [disk image (non-bootable)] [vmlinux] [kernel image] ci-qemu-upstream-386 possible deadlock in ntfs_read_folio
2023/05/29 21:56 upstream 8b817fded42d cf184559 .config console log report info [disk image (non-bootable)] [vmlinux] [kernel image] ci-qemu-upstream-386 possible deadlock in ntfs_read_folio
2023/05/29 17:37 upstream e338142b39cf cf184559 .config console log report info [disk image (non-bootable)] [vmlinux] [kernel image] ci-qemu-upstream-386 possible deadlock in ntfs_read_folio
2023/05/29 11:39 upstream e338142b39cf cf184559 .config console log report info [disk image (non-bootable)] [vmlinux] [kernel image] ci-qemu-upstream-386 possible deadlock in ntfs_read_folio
2023/05/29 10:30 upstream e338142b39cf cf184559 .config console log report info [disk image (non-bootable)] [vmlinux] [kernel image] ci-qemu-upstream-386 possible deadlock in ntfs_read_folio
2023/05/29 08:16 upstream e338142b39cf cf184559 .config console log report info [disk image (non-bootable)] [vmlinux] [kernel image] ci-qemu-upstream-386 possible deadlock in ntfs_read_folio
2022/09/27 18:04 upstream a1375562c0a8 87840e00 .config console log report info ci-qemu-upstream-386 possible deadlock in ntfs_read_folio
2023/05/26 12:52 linux-next 715abedee4cd b40ef614 .config console log report info [disk image] [vmlinux] [kernel image] ci-upstream-linux-next-kasan-gce-root possible deadlock in ntfs_read_folio
2023/05/27 11:12 git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux.git for-kernelci eb0f1697d729 cf184559 .config console log report info [disk image] [vmlinux] [kernel image] ci-upstream-gce-arm64 possible deadlock in ntfs_read_folio
* Struck through repros no longer work on HEAD.