syzbot


possible deadlock in ntfs_readpage

Status: upstream: reported C repro on 2022/09/26 03:04
Subsystems: ntfs
[Documentation on labels]
Reported-by: syzbot+6071b03fe6fdd40331b7@syzkaller.appspotmail.com
First crash: 592d, last: 438d
Similar bugs (2)
Kernel Title Repro Cause bisect Fix bisect Count Last Reported Patched Status
linux-5.15 possible deadlock in ntfs_readpage origin:upstream missing-backport C 164 1d16h 422d 0/3 upstream: reported C repro on 2023/03/15 17:04
linux-4.19 possible deadlock in ntfs_readpage ntfs C 51 442d 592d 0/1 upstream: reported C repro on 2022/09/26 05:24

Sample crash report:
IPVS: ftp: loaded support on port[0] = 21
ntfs: volume version 3.1.
syz-executor247 (7961): drop_caches: 1
syz-executor247 (7961): drop_caches: 1
======================================================
WARNING: possible circular locking dependency detected
4.14.301-syzkaller #0 Not tainted
------------------------------------------------------
kworker/u4:1/22 is trying to acquire lock:
 (&rl->lock){++++}, at: [<ffffffff82102946>] ntfs_read_block fs/ntfs/aops.c:269 [inline]
 (&rl->lock){++++}, at: [<ffffffff82102946>] ntfs_readpage+0x1396/0x1ad0 fs/ntfs/aops.c:456

but task is already holding lock:
 (&ni->mrec_lock){+.+.}, at: [<ffffffff8213d92b>] map_mft_record+0x2b/0xbe0 fs/ntfs/mft.c:166

which lock already depends on the new lock.


the existing dependency chain (in reverse order) is:

-> #1 (&ni->mrec_lock){+.+.}:
       __mutex_lock_common kernel/locking/mutex.c:756 [inline]
       __mutex_lock+0xc4/0x1310 kernel/locking/mutex.c:893
       map_mft_record+0x2b/0xbe0 fs/ntfs/mft.c:166
       ntfs_truncate+0x1a6/0x22d0 fs/ntfs/inode.c:2415
       ntfs_truncate_vfs fs/ntfs/inode.c:2895 [inline]
       ntfs_setattr+0x148/0x580 fs/ntfs/inode.c:2945
       notify_change+0x56b/0xd10 fs/attr.c:315
       do_truncate+0xff/0x1a0 fs/open.c:63
       handle_truncate fs/namei.c:3010 [inline]
       do_last fs/namei.c:3437 [inline]
       path_openat+0x1dcc/0x2970 fs/namei.c:3571
       do_filp_open+0x179/0x3c0 fs/namei.c:3605
       do_sys_open+0x296/0x410 fs/open.c:1081
       do_syscall_64+0x1d5/0x640 arch/x86/entry/common.c:292
       entry_SYSCALL_64_after_hwframe+0x5e/0xd3

-> #0 (&rl->lock){++++}:
       lock_acquire+0x170/0x3f0 kernel/locking/lockdep.c:3998
       down_read+0x36/0x80 kernel/locking/rwsem.c:24
       ntfs_read_block fs/ntfs/aops.c:269 [inline]
       ntfs_readpage+0x1396/0x1ad0 fs/ntfs/aops.c:456
       do_read_cache_page+0x38e/0xc10 mm/filemap.c:2713
       read_mapping_page include/linux/pagemap.h:398 [inline]
       ntfs_map_page fs/ntfs/aops.h:89 [inline]
       ntfs_sync_mft_mirror+0x1f4/0x1560 fs/ntfs/mft.c:490
       write_mft_record_nolock+0xece/0x1240 fs/ntfs/mft.c:793
       write_mft_record fs/ntfs/mft.h:109 [inline]
       __ntfs_write_inode+0x58d/0xcc0 fs/ntfs/inode.c:3084
       write_inode fs/fs-writeback.c:1241 [inline]
       __writeback_single_inode+0x6a4/0x1010 fs/fs-writeback.c:1439
       writeback_sb_inodes+0x48b/0xd30 fs/fs-writeback.c:1645
       wb_writeback+0x243/0xb80 fs/fs-writeback.c:1820
       wb_do_writeback fs/fs-writeback.c:1952 [inline]
       wb_workfn+0x2bd/0xf50 fs/fs-writeback.c:1988
       process_one_work+0x793/0x14a0 kernel/workqueue.c:2117
       worker_thread+0x5cc/0xff0 kernel/workqueue.c:2251
       kthread+0x30d/0x420 kernel/kthread.c:232
       ret_from_fork+0x24/0x30 arch/x86/entry/entry_64.S:406

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);
  lock(&rl->lock);

 *** DEADLOCK ***

3 locks held by kworker/u4:1/22:
 #0:  ("writeback"){+.+.}, at: [<ffffffff81366130>] process_one_work+0x6b0/0x14a0 kernel/workqueue.c:2088
 #1:  ((&(&wb->dwork)->work)){+.+.}, at: [<ffffffff81366166>] process_one_work+0x6e6/0x14a0 kernel/workqueue.c:2092
 #2:  (&ni->mrec_lock){+.+.}, at: [<ffffffff8213d92b>] map_mft_record+0x2b/0xbe0 fs/ntfs/mft.c:166

stack backtrace:
CPU: 0 PID: 22 Comm: kworker/u4:1 Not tainted 4.14.301-syzkaller #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 10/26/2022
Workqueue: writeback wb_workfn (flush-7:0)
Call Trace:
 __dump_stack lib/dump_stack.c:17 [inline]
 dump_stack+0x1b2/0x281 lib/dump_stack.c:58
 print_circular_bug.constprop.0.cold+0x2d7/0x41e kernel/locking/lockdep.c:1258
 check_prev_add kernel/locking/lockdep.c:1905 [inline]
 check_prevs_add kernel/locking/lockdep.c:2022 [inline]
 validate_chain kernel/locking/lockdep.c:2464 [inline]
 __lock_acquire+0x2e0e/0x3f20 kernel/locking/lockdep.c:3491
 lock_acquire+0x170/0x3f0 kernel/locking/lockdep.c:3998
 down_read+0x36/0x80 kernel/locking/rwsem.c:24
 ntfs_read_block fs/ntfs/aops.c:269 [inline]
 ntfs_readpage+0x1396/0x1ad0 fs/ntfs/aops.c:456
 do_read_cache_page+0x38e/0xc10 mm/filemap.c:2713
 read_mapping_page include/linux/pagemap.h:398 [inline]
 ntfs_map_page fs/ntfs/aops.h:89 [inline]
 ntfs_sync_mft_mirror+0x1f4/0x1560 fs/ntfs/mft.c:490
 write_mft_record_nolock+0xece/0x1240 fs/ntfs/mft.c:793
 write_mft_record fs/ntfs/mft.h:109 [inline]
 __ntfs_write_inode+0x58d/0xcc0 fs/ntfs/inode.c:3084
 write_inode fs/fs-writeback.c:1241 [inline]
 __writeback_single_inode+0x6a4/0x1010 fs/fs-writeback.c:1439
 writeback_sb_inodes+0x48b/0xd30 fs/fs-writeback.c:1645
 wb_writeback+0x243/0xb80 fs/fs-writeback.c:1820
 wb_do_writeback fs/fs-writeback.c:1952 [inline]
 wb_workfn+0x2bd/0xf50 fs/fs-writeback.c:1988
 process_one_work+0x793/0x14a0 kernel/workqueue.c:2117
 worker_thread+0x5cc/0xff0 kernel/workqueue.c:2251
 kthread+0x30d/0x420 kernel/kthread.c:232
 ret_from_fork+0x24/0x30 arch/x86/entry/entry_64.S:406
ntfs: (device loop0): write_mft_record_nolock(): Failed to apply mst fixups!
ntfs: (device loop0): __ntfs_write_inode(): Failed (error 22):  Run chkdsk.
ntfs: (devic

Crashes (40):
Time Kernel Commit Syzkaller Config Log Report Syz repro C repro VM info Assets (help?) Manager Title
2022/12/10 23:41 linux-4.14.y 65afe34ac33d 67be1ae7 .config console log report syz C [disk image] [vmlinux] [kernel image] [mounted in repro] ci2-linux-4-14 possible deadlock in ntfs_readpage
2022/12/02 14:24 linux-4.14.y 179ef7fe8677 e080de16 .config console log report syz C [disk image] [vmlinux] [kernel image] [mounted in repro] ci2-linux-4-14 possible deadlock in ntfs_readpage
2022/10/02 03:55 linux-4.14.y 9d5c0b3a8e1a feb56351 .config console log report syz C [disk image] [vmlinux] ci2-linux-4-14 possible deadlock in ntfs_readpage
2022/09/26 03:04 linux-4.14.y 4edbf74132a4 0042f2b4 .config console log report syz C [disk image] [vmlinux] ci2-linux-4-14 possible deadlock in ntfs_readpage
2023/02/27 16:24 linux-4.14.y 7878a41b6cc1 9189cb53 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-4-14 possible deadlock in ntfs_readpage
2023/02/27 13:03 linux-4.14.y 7878a41b6cc1 9189cb53 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-4-14 possible deadlock in ntfs_readpage
2023/02/22 15:26 linux-4.14.y 1e61bd26fa2c 9f1e2cb3 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-4-14 possible deadlock in ntfs_readpage
2023/02/21 02:18 linux-4.14.y a8ad60f2af58 2414209c .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-4-14 possible deadlock in ntfs_readpage
2023/02/19 03:26 linux-4.14.y a8ad60f2af58 bcdf85f8 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-4-14 possible deadlock in ntfs_readpage
2023/02/19 03:21 linux-4.14.y a8ad60f2af58 bcdf85f8 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-4-14 possible deadlock in ntfs_readpage
2023/02/17 01:18 linux-4.14.y a8ad60f2af58 851bc19a .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-4-14 possible deadlock in ntfs_readpage
2023/02/07 21:45 linux-4.14.y a8ad60f2af58 15c3d445 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-4-14 possible deadlock in ntfs_readpage
2023/01/24 11:41 linux-4.14.y 3949d1610004 9dfcf09c .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-4-14 possible deadlock in ntfs_readpage
2023/01/24 11:06 linux-4.14.y 3949d1610004 9dfcf09c .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-4-14 possible deadlock in ntfs_readpage
2023/01/23 18:53 linux-4.14.y 97205fccccdc 9dfcf09c .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-4-14 possible deadlock in ntfs_readpage
2023/01/18 17:29 linux-4.14.y 97205fccccdc 4620c2d9 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-4-14 possible deadlock in ntfs_readpage
2023/01/17 19:26 linux-4.14.y c4215ee4771b 42660d9e .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-4-14 possible deadlock in ntfs_readpage
2023/01/14 14:22 linux-4.14.y c4215ee4771b a63719e7 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-4-14 possible deadlock in ntfs_readpage
2023/01/11 17:41 linux-4.14.y c4215ee4771b 96166539 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-4-14 possible deadlock in ntfs_readpage
2023/01/10 12:14 linux-4.14.y c4215ee4771b 48bc529a .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-4-14 possible deadlock in ntfs_readpage
2023/01/10 01:44 linux-4.14.y c4215ee4771b 48bc529a .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-4-14 possible deadlock in ntfs_readpage
2022/12/31 00:14 linux-4.14.y c4215ee4771b ab32d508 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-4-14 possible deadlock in ntfs_readpage
2022/12/27 20:39 linux-4.14.y c4215ee4771b 44712fbc .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-4-14 possible deadlock in ntfs_readpage
2022/12/15 17:06 linux-4.14.y c4215ee4771b 6f9c033e .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-4-14 possible deadlock in ntfs_readpage
2022/12/14 21:24 linux-4.14.y c4215ee4771b b18f0a64 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-4-14 possible deadlock in ntfs_readpage
2022/12/06 21:14 linux-4.14.y 179ef7fe8677 d88f3abb .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-4-14 possible deadlock in ntfs_readpage
2022/12/06 19:20 linux-4.14.y 179ef7fe8677 d88f3abb .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-4-14 possible deadlock in ntfs_readpage
2022/12/01 23:25 linux-4.14.y 179ef7fe8677 e080de16 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-4-14 possible deadlock in ntfs_readpage
2022/12/01 19:29 linux-4.14.y 179ef7fe8677 e080de16 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-4-14 possible deadlock in ntfs_readpage
2022/11/22 16:34 linux-4.14.y e911713e40ca 9da37ae8 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-4-14 possible deadlock in ntfs_readpage
2022/11/15 02:30 linux-4.14.y e911713e40ca 97de9cfc .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-4-14 possible deadlock in ntfs_readpage
2022/11/11 06:05 linux-4.14.y e911713e40ca f42ee5d8 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-4-14 possible deadlock in ntfs_readpage
2022/11/10 02:26 linux-4.14.y a901bb6c7db7 b2488a87 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-4-14 possible deadlock in ntfs_readpage
2022/11/03 07:22 linux-4.14.y a85772d7ba90 7a2ebf95 .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-4-14 possible deadlock in ntfs_readpage
2022/11/01 21:55 linux-4.14.y a85772d7ba90 08977f5d .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-4-14 possible deadlock in ntfs_readpage
2022/11/01 07:06 linux-4.14.y 41f36d7859a7 a1d8560a .config console log report info [disk image] [vmlinux] [kernel image] ci2-linux-4-14 possible deadlock in ntfs_readpage
2022/10/26 09:20 linux-4.14.y 9d5c0b3a8e1a 2159e4d2 .config console log report info [disk image] [vmlinux] ci2-linux-4-14 possible deadlock in ntfs_readpage
2022/10/25 18:10 linux-4.14.y 9d5c0b3a8e1a 45645420 .config console log report info [disk image] [vmlinux] ci2-linux-4-14 possible deadlock in ntfs_readpage
2022/10/21 02:27 linux-4.14.y 9d5c0b3a8e1a a0fd4dab .config console log report info [disk image] [vmlinux] ci2-linux-4-14 possible deadlock in ntfs_readpage
2022/10/12 23:02 linux-4.14.y 9d5c0b3a8e1a 16a9c9e0 .config console log report info [disk image] [vmlinux] ci2-linux-4-14 possible deadlock in ntfs_readpage
* Struck through repros no longer work on HEAD.