syzbot


possible deadlock in hfsplus_file_truncate

Status: upstream: reported C repro on 2022/11/27 09:20
Subsystems: hfsplus
[Documentation on labels]
Reported-by: syzbot+6d9b7e8f97ee638f0d63@syzkaller.appspotmail.com
First crash: 739d, last: 640d
Similar bugs (3)
Kernel Title Repro Cause bisect Fix bisect Count Last Reported Patched Status
upstream possible deadlock in hfsplus_file_truncate hfs C error 51400 114d 740d 27/28 fixed on 2024/08/14 03:44
linux-5.15 possible deadlock in hfsplus_file_truncate missing-backport C inconclusive 5300 109d 635d 0/3 auto-obsoleted due to no activity on 2024/10/28 04:09
linux-6.1 possible deadlock in hfsplus_file_truncate missing-backport origin:lts-only C error 4262 89d 631d 0/3 upstream: reported C repro on 2023/03/15 11:18

Sample crash report:
         will be removed in v5.15!
======================================================
hfsplus: xattr searching failed
hfsplus: xattr searching failed
======================================================
WARNING: possible circular locking dependency detected
4.19.211-syzkaller #0 Not tainted
------------------------------------------------------
syz-executor247/8113 is trying to acquire lock:
0000000015b30424 (&tree->tree_lock){+.+.}, at: hfsplus_file_truncate+0xde7/0x1040 fs/hfsplus/extents.c:595

but task is already holding lock:
000000003707ce85 (&HFSPLUS_I(inode)->extents_lock){+.+.}, at: hfsplus_file_truncate+0x1e2/0x1040 fs/hfsplus/extents.c:576

which lock already depends on the new lock.


the existing dependency chain (in reverse order) is:

-> #1 (&HFSPLUS_I(inode)->extents_lock){+.+.}:
       hfsplus_file_extend+0x1bb/0xf40 fs/hfsplus/extents.c:457
       hfsplus_bmap_reserve+0x298/0x440 fs/hfsplus/btree.c:357
       hfsplus_create_cat+0x1e3/0x1210 fs/hfsplus/catalog.c:272
       hfsplus_mknod+0x165/0x320 fs/hfsplus/dir.c:494
       lookup_open+0x893/0x1a20 fs/namei.c:3235
       do_last fs/namei.c:3327 [inline]
       path_openat+0x1094/0x2df0 fs/namei.c:3537
       do_filp_open+0x18c/0x3f0 fs/namei.c:3567
       do_sys_open+0x3b3/0x520 fs/open.c:1085
       do_syscall_64+0xf9/0x620 arch/x86/entry/common.c:293
       entry_SYSCALL_64_after_hwframe+0x49/0xbe

-> #0 (&tree->tree_lock){+.+.}:
       __mutex_lock_common kernel/locking/mutex.c:937 [inline]
       __mutex_lock+0xd7/0x1190 kernel/locking/mutex.c:1078
       hfsplus_file_truncate+0xde7/0x1040 fs/hfsplus/extents.c:595
       hfsplus_setattr+0x1e7/0x310 fs/hfsplus/inode.c:263
       notify_change+0x70b/0xfc0 fs/attr.c:334
       do_truncate+0x134/0x1f0 fs/open.c:63
       vfs_truncate+0x54b/0x6d0 fs/open.c:109
       do_sys_truncate fs/open.c:132 [inline]
       do_sys_truncate+0x145/0x170 fs/open.c:120
       do_syscall_64+0xf9/0x620 arch/x86/entry/common.c:293
       entry_SYSCALL_64_after_hwframe+0x49/0xbe

other info that might help us debug this:

 Possible unsafe locking scenario:

       CPU0                    CPU1
       ----                    ----
  lock(&HFSPLUS_I(inode)->extents_lock);
                               lock(&tree->tree_lock);
                               lock(&HFSPLUS_I(inode)->extents_lock);
  lock(&tree->tree_lock);

 *** DEADLOCK ***

3 locks held by syz-executor247/8113:
 #0: 0000000061f0b3b5 (sb_writers#11){.+.+}, at: sb_start_write include/linux/fs.h:1579 [inline]
 #0: 0000000061f0b3b5 (sb_writers#11){.+.+}, at: mnt_want_write+0x3a/0xb0 fs/namespace.c:360
 #1: 0000000025fc88c4 (&sb->s_type->i_mutex_key#17){+.+.}, at: inode_lock include/linux/fs.h:748 [inline]
 #1: 0000000025fc88c4 (&sb->s_type->i_mutex_key#17){+.+.}, at: do_truncate+0x125/0x1f0 fs/open.c:61
 #2: 000000003707ce85 (&HFSPLUS_I(inode)->extents_lock){+.+.}, at: hfsplus_file_truncate+0x1e2/0x1040 fs/hfsplus/extents.c:576

stack backtrace:
CPU: 1 PID: 8113 Comm: syz-executor247 Not tainted 4.19.211-syzkaller #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 10/26/2022
Call Trace:
 __dump_stack lib/dump_stack.c:77 [inline]
 dump_stack+0x1fc/0x2ef lib/dump_stack.c:118
 print_circular_bug.constprop.0.cold+0x2d7/0x41e kernel/locking/lockdep.c:1222
 check_prev_add kernel/locking/lockdep.c:1866 [inline]
 check_prevs_add kernel/locking/lockdep.c:1979 [inline]
 validate_chain kernel/locking/lockdep.c:2420 [inline]
 __lock_acquire+0x30c9/0x3ff0 kernel/locking/lockdep.c:3416
 lock_acquire+0x170/0x3c0 kernel/locking/lockdep.c:3908
 __mutex_lock_common kernel/locking/mutex.c:937 [inline]
 __mutex_lock+0xd7/0x1190 kernel/locking/mutex.c:1078
 hfsplus_file_truncate+0xde7/0x1040 fs/hfsplus/extents.c:595
 hfsplus_setattr+0x1e7/0x310 fs/hfsplus/inode.c:263
 notify_change+0x70b/0xfc0 fs/attr.c:334
 do_truncate+0x134/0x1f0 fs/open.c:63
 vfs_truncate+0x54b/0x6d0 fs/open.c:109
 do_sys_truncate fs/open.c:132 [inline]
 do_sys_truncate+0x145/0x170 fs/open.c:120
 do_syscall_64+0xf9/0x620 arch/x86/entry/common.c:293
 entry_SYSCALL_64_after_hwframe+0x49/0xbe
RIP: 0033:0x7fa4e6b957a9
Code: 28 00 00 00 75 05 48 83 c4 28 c3 e8 51 14 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 c0 ff ff ff f7 d8 64 89 01 48
RSP: 002b:00007ffdb044f8d8 EFLAGS: 00000246 ORIG_RAX: 000000000000004c
RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007fa4e6b957a9
RDX: 00007fa4e6b957a9 RSI: 0000000000000000 RDI: 0000000020000000
RBP: 00007fa4e6b55040 R08: 0000000000000000 R09: 0000000000000000
R10: 000000000000063c R11: 0000000000000246 R12: 00007fa4e6b550d0
R13: 00000000000000

Crashes (165):
Time Kernel Commit Syzkaller Config Log Report Syz repro C repro VM info Assets (help?) Manager Title
2022/12/16 03:53 linux-4.19.y 3f8a27f9e27b 6f9c033e .config console log report syz C [disk image] [vmlinux] [mounted in repro] ci2-linux-4-19 possible deadlock in hfsplus_file_truncate
2022/12/08 12:50 linux-4.19.y 3f8a27f9e27b d88f3abb .config console log report syz C [disk image] [vmlinux] [mounted in repro #1] [mounted in repro #2] ci2-linux-4-19 possible deadlock in hfsplus_file_truncate
2023/03/06 22:07 linux-4.19.y 3f8a27f9e27b f8902b57 .config console log report info [disk image] [vmlinux] ci2-linux-4-19 possible deadlock in hfsplus_file_truncate
2023/03/05 22:09 linux-4.19.y 3f8a27f9e27b f8902b57 .config console log report info [disk image] [vmlinux] ci2-linux-4-19 possible deadlock in hfsplus_file_truncate
2023/03/05 05:22 linux-4.19.y 3f8a27f9e27b f8902b57 .config console log report info [disk image] [vmlinux] ci2-linux-4-19 possible deadlock in hfsplus_file_truncate
2023/03/04 12:14 linux-4.19.y 3f8a27f9e27b f8902b57 .config console log report info [disk image] [vmlinux] ci2-linux-4-19 possible deadlock in hfsplus_file_truncate
2023/03/03 14:28 linux-4.19.y 3f8a27f9e27b f8902b57 .config console log report info [disk image] [vmlinux] ci2-linux-4-19 possible deadlock in hfsplus_file_truncate
2023/02/28 13:48 linux-4.19.y 3f8a27f9e27b 95aee97a .config console log report info [disk image] [vmlinux] ci2-linux-4-19 possible deadlock in hfsplus_file_truncate
2023/02/27 23:07 linux-4.19.y 3f8a27f9e27b 95aee97a .config console log report info [disk image] [vmlinux] ci2-linux-4-19 possible deadlock in hfsplus_file_truncate
2023/02/27 00:47 linux-4.19.y 3f8a27f9e27b ee50e71c .config console log report info [disk image] [vmlinux] ci2-linux-4-19 possible deadlock in hfsplus_file_truncate
2023/02/26 19:09 linux-4.19.y 3f8a27f9e27b ee50e71c .config console log report info [disk image] [vmlinux] ci2-linux-4-19 possible deadlock in hfsplus_file_truncate
2023/02/21 17:14 linux-4.19.y 3f8a27f9e27b f949448d .config console log report info [disk image] [vmlinux] ci2-linux-4-19 possible deadlock in hfsplus_file_truncate
2023/02/20 13:38 linux-4.19.y 3f8a27f9e27b bcdf85f8 .config console log report info [disk image] [vmlinux] ci2-linux-4-19 possible deadlock in hfsplus_file_truncate
2023/02/20 04:17 linux-4.19.y 3f8a27f9e27b bcdf85f8 .config console log report info [disk image] [vmlinux] ci2-linux-4-19 possible deadlock in hfsplus_file_truncate
2023/02/18 12:56 linux-4.19.y 3f8a27f9e27b d02e9a70 .config console log report info [disk image] [vmlinux] ci2-linux-4-19 possible deadlock in hfsplus_file_truncate
2023/02/17 17:28 linux-4.19.y 3f8a27f9e27b cf8c2d39 .config console log report info [disk image] [vmlinux] ci2-linux-4-19 possible deadlock in hfsplus_file_truncate
2023/02/13 17:09 linux-4.19.y 3f8a27f9e27b 957959cb .config console log report info [disk image] [vmlinux] ci2-linux-4-19 possible deadlock in hfsplus_file_truncate
2023/02/13 12:08 linux-4.19.y 3f8a27f9e27b 957959cb .config console log report info [disk image] [vmlinux] ci2-linux-4-19 possible deadlock in hfsplus_file_truncate
2023/02/13 08:57 linux-4.19.y 3f8a27f9e27b 93e26d60 .config console log report info [disk image] [vmlinux] ci2-linux-4-19 possible deadlock in hfsplus_file_truncate
2023/02/13 06:16 linux-4.19.y 3f8a27f9e27b 93e26d60 .config console log report info [disk image] [vmlinux] ci2-linux-4-19 possible deadlock in hfsplus_file_truncate
2023/02/13 03:48 linux-4.19.y 3f8a27f9e27b 93e26d60 .config console log report info [disk image] [vmlinux] ci2-linux-4-19 possible deadlock in hfsplus_file_truncate
2023/02/12 18:51 linux-4.19.y 3f8a27f9e27b 93e26d60 .config console log report info [disk image] [vmlinux] ci2-linux-4-19 possible deadlock in hfsplus_file_truncate
2023/02/12 15:55 linux-4.19.y 3f8a27f9e27b 93e26d60 .config console log report info [disk image] [vmlinux] ci2-linux-4-19 possible deadlock in hfsplus_file_truncate
2023/02/12 09:28 linux-4.19.y 3f8a27f9e27b 93e26d60 .config console log report info [disk image] [vmlinux] ci2-linux-4-19 possible deadlock in hfsplus_file_truncate
2023/02/09 16:42 linux-4.19.y 3f8a27f9e27b 07980f9d .config console log report info [disk image] [vmlinux] ci2-linux-4-19 possible deadlock in hfsplus_file_truncate
2023/02/06 07:20 linux-4.19.y 3f8a27f9e27b be607b78 .config console log report info [disk image] [vmlinux] ci2-linux-4-19 possible deadlock in hfsplus_file_truncate
2023/02/04 20:48 linux-4.19.y 3f8a27f9e27b be607b78 .config console log report info [disk image] [vmlinux] ci2-linux-4-19 possible deadlock in hfsplus_file_truncate
2023/02/04 14:44 linux-4.19.y 3f8a27f9e27b be607b78 .config console log report info [disk image] [vmlinux] ci2-linux-4-19 possible deadlock in hfsplus_file_truncate
2023/02/02 06:16 linux-4.19.y 3f8a27f9e27b 9a6f477c .config console log report info [disk image] [vmlinux] ci2-linux-4-19 possible deadlock in hfsplus_file_truncate
2023/02/01 08:30 linux-4.19.y 3f8a27f9e27b b68fb8d6 .config console log report info [disk image] [vmlinux] ci2-linux-4-19 possible deadlock in hfsplus_file_truncate
2023/01/30 13:21 linux-4.19.y 3f8a27f9e27b b68fb8d6 .config console log report info [disk image] [vmlinux] ci2-linux-4-19 possible deadlock in hfsplus_file_truncate
2023/01/30 10:01 linux-4.19.y 3f8a27f9e27b 9dfcf09c .config console log report info [disk image] [vmlinux] ci2-linux-4-19 possible deadlock in hfsplus_file_truncate
2023/01/30 08:10 linux-4.19.y 3f8a27f9e27b 9dfcf09c .config console log report info [disk image] [vmlinux] ci2-linux-4-19 possible deadlock in hfsplus_file_truncate
2023/01/30 05:53 linux-4.19.y 3f8a27f9e27b 9dfcf09c .config console log report info [disk image] [vmlinux] ci2-linux-4-19 possible deadlock in hfsplus_file_truncate
2023/01/30 02:48 linux-4.19.y 3f8a27f9e27b 9dfcf09c .config console log report info [disk image] [vmlinux] ci2-linux-4-19 possible deadlock in hfsplus_file_truncate
2023/01/29 23:59 linux-4.19.y 3f8a27f9e27b 9dfcf09c .config console log report info [disk image] [vmlinux] ci2-linux-4-19 possible deadlock in hfsplus_file_truncate
2023/01/29 20:30 linux-4.19.y 3f8a27f9e27b 9dfcf09c .config console log report info [disk image] [vmlinux] ci2-linux-4-19 possible deadlock in hfsplus_file_truncate
2023/01/29 09:13 linux-4.19.y 3f8a27f9e27b 9dfcf09c .config console log report info [disk image] [vmlinux] ci2-linux-4-19 possible deadlock in hfsplus_file_truncate
2023/01/29 04:58 linux-4.19.y 3f8a27f9e27b 9dfcf09c .config console log report info [disk image] [vmlinux] ci2-linux-4-19 possible deadlock in hfsplus_file_truncate
2023/01/28 23:31 linux-4.19.y 3f8a27f9e27b 9dfcf09c .config console log report info [disk image] [vmlinux] ci2-linux-4-19 possible deadlock in hfsplus_file_truncate
2023/01/28 17:08 linux-4.19.y 3f8a27f9e27b 9dfcf09c .config console log report info [disk image] [vmlinux] ci2-linux-4-19 possible deadlock in hfsplus_file_truncate
2023/01/28 11:12 linux-4.19.y 3f8a27f9e27b 9dfcf09c .config console log report info [disk image] [vmlinux] ci2-linux-4-19 possible deadlock in hfsplus_file_truncate
2023/01/28 07:55 linux-4.19.y 3f8a27f9e27b 9dfcf09c .config console log report info [disk image] [vmlinux] ci2-linux-4-19 possible deadlock in hfsplus_file_truncate
2023/01/27 22:46 linux-4.19.y 3f8a27f9e27b 9dfcf09c .config console log report info [disk image] [vmlinux] ci2-linux-4-19 possible deadlock in hfsplus_file_truncate
2023/01/27 17:47 linux-4.19.y 3f8a27f9e27b 9dfcf09c .config console log report info [disk image] [vmlinux] ci2-linux-4-19 possible deadlock in hfsplus_file_truncate
2023/01/27 12:26 linux-4.19.y 3f8a27f9e27b 9dfcf09c .config console log report info [disk image] [vmlinux] ci2-linux-4-19 possible deadlock in hfsplus_file_truncate
2023/01/27 10:46 linux-4.19.y 3f8a27f9e27b 9dfcf09c .config console log report info [disk image] [vmlinux] ci2-linux-4-19 possible deadlock in hfsplus_file_truncate
2023/01/27 09:27 linux-4.19.y 3f8a27f9e27b 9dfcf09c .config console log report info [disk image] [vmlinux] ci2-linux-4-19 possible deadlock in hfsplus_file_truncate
2022/11/27 09:19 linux-4.19.y 3f8a27f9e27b f4470a7b .config console log report info [disk image] [vmlinux] ci2-linux-4-19 possible deadlock in hfsplus_file_truncate
* Struck through repros no longer work on HEAD.