program: r0 = syz_mount_image$hfsplus(&(0x7f0000000600), &(0x7f0000000040)='./file1\x00', 0x0, &(0x7f0000000080)={[{@part={'part', 0x3d, 0x40}}, {@nodecompose}, {@part={'part', 0x3d, 0x7}}, {@part={'part', 0x3d, 0xc}}, {@uid}, {@barrier}, {@nls={'nls', 0x3d, 'macinuit'}}, {@gid={'gid', 0x3d, 0xee00}}]}, 0x3, 0x5f4, &(0x7f0000000640)="$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") r1 = bpf$MAP_CREATE(0x0, &(0x7f0000000000)=@base={0xa, 0x5, 0x2, 0x7}, 0x48) bpf$PROG_LOAD(0x5, &(0x7f0000000180)={0x0, 0xc, &(0x7f0000000440)=@framed={{}, [@ringbuf_output={{0x18, 0x1, 0x1, 0x0, r1}, {}, {}, {}, {}, {}, {}, {0x85, 0x0, 0x0, 0x3}}]}, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, '\x00', 0x0, @fallback, 0xffffffffffffffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xffffffffffffffff, 0x0, 0x0, 0x0, 0x0}, 0x90) r2 = bpf$PROG_LOAD(0x5, &(0x7f00000000c0)={0x11, 0xc, &(0x7f0000000440)=ANY=[], &(0x7f0000000240)='GPL\x00', 0x0, 0x0, 0x0, 0x0, 0x0, '\x00', 0x0, @fallback, 0xffffffffffffffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, 0x90) bpf$BPF_RAW_TRACEPOINT_OPEN(0x11, &(0x7f0000000bc0)={&(0x7f0000000040)='leases_conflict\x00', r2}, 0x10) r3 = bpf$PROG_LOAD(0x5, &(0x7f00000000c0)={0x11, 0xc, &(0x7f0000000440)=ANY=[], &(0x7f0000000240)='GPL\x00', 0x0, 0x0, 0x0, 0x0, 0x0, '\x00', 0x0, @fallback, 0xffffffffffffffff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, 0x90) bpf$BPF_RAW_TRACEPOINT_OPEN(0x11, &(0x7f0000000bc0)={&(0x7f0000000040)='leases_conflict\x00', r3}, 0x10) r4 = openat(0xffffffffffffff9c, &(0x7f0000000080)='./file1\x00', 0x2040, 0x0) fcntl$setlease(r4, 0x400, 0x0) fsetxattr$trusted_overlay_redirect(r4, 0x0, 0x0, 0x0, 0x0) unlink(&(0x7f0000000100)='./file1\x00') ioctl$BTRFS_IOC_GET_SUBVOL_INFO(0xffffffffffffffff, 0x81f8943c, &(0x7f0000000400)={0x0, ""/256, 0x0}) ioctl$BTRFS_IOC_INO_LOOKUP(0xffffffffffffffff, 0xd0009412, &(0x7f0000000c40)={r5, 0x2}) getdents64(0xffffffffffffffff, &(0x7f0000000100)=""/154, 0x9a) unlinkat(r0, &(0x7f00000003c0)='./file2\x00', 0x200) r6 = openat$dir(0xffffffffffffff9c, &(0x7f00000000c0)='./file0\x00', 0x0, 0x0) fchmodat(r6, &(0x7f00000000c0)='./file1\x00', 0x0) openat(r6, &(0x7f00000001c0)='./file1\x00', 0x7, 0x6) unlinkat(r6, &(0x7f0000000000)='./file1\x00', 0x0) [ 67.818119][ T5315] Bluetooth: hci0: command tx timeout [ 67.855008][ T5336] loop0: detected capacity change from 0 to 1024 [ 67.963618][ T5336] [ 67.964656][ T5336] ============================================ [ 67.967218][ T5336] WARNING: possible recursive locking detected [ 67.969924][ T5336] 6.16.0-rc5-syzkaller-00038-g733923397fd9 #0 Not tainted [ 67.973068][ T5336] -------------------------------------------- [ 67.975728][ T5336] syz.0.0/5336 is trying to acquire lock: [ 67.977915][ T5336] ffff888053699548 (&HFSPLUS_I(inode)->extents_lock){+.+.}-{4:4}, at: hfsplus_get_block+0x39e/0x1530 [ 67.982484][ T5336] [ 67.982484][ T5336] but task is already holding lock: [ 67.985735][ T5336] ffff88805369b708 (&HFSPLUS_I(inode)->extents_lock){+.+.}-{4:4}, at: hfsplus_file_truncate+0x294/0xb40 [ 67.990590][ T5336] [ 67.990590][ T5336] other info that might help us debug this: [ 67.994227][ T5336] Possible unsafe locking scenario: [ 67.994227][ T5336] [ 67.997573][ T5336] CPU0 [ 67.999117][ T5336] ---- [ 68.000567][ T5336] lock(&HFSPLUS_I(inode)->extents_lock); [ 68.002982][ T5336] lock(&HFSPLUS_I(inode)->extents_lock); [ 68.005151][ T5336] [ 68.005151][ T5336] *** DEADLOCK *** [ 68.005151][ T5336] [ 68.008276][ T5336] May be due to missing lock nesting notation [ 68.008276][ T5336] [ 68.011661][ T5336] 6 locks held by syz.0.0/5336: [ 68.013720][ T5336] #0: ffff888030af6428 (sb_writers#12){.+.+}-{0:0}, at: mnt_want_write+0x41/0x90 [ 68.017369][ T5336] #1: ffff88805369b238 (&type->i_mutex_dir_key#8/1){+.+.}-{4:4}, at: do_unlinkat+0x1bf/0x560 [ 68.021556][ T5336] #2: ffff88805369b8f8 (&sb->s_type->i_mutex_key#20){+.+.}-{4:4}, at: vfs_unlink+0xf2/0x650 [ 68.025624][ T5336] #3: ffff888053696998 (&sbi->vh_mutex){+.+.}-{4:4}, at: hfsplus_unlink+0x160/0x730 [ 68.029492][ T5336] #4: ffff88805369b708 (&HFSPLUS_I(inode)->extents_lock){+.+.}-{4:4}, at: hfsplus_file_truncate+0x294/0xb40 [ 68.033864][ T5336] #5: ffff8880536968f8 (&sbi->alloc_mutex){+.+.}-{4:4}, at: hfsplus_block_free+0xbe/0x550 [ 68.037638][ T5336] [ 68.037638][ T5336] stack backtrace: [ 68.039924][ T5336] CPU: 0 UID: 0 PID: 5336 Comm: syz.0.0 Not tainted 6.16.0-rc5-syzkaller-00038-g733923397fd9 #0 PREEMPT(full) [ 68.039936][ T5336] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.3-debian-1.16.3-2~bpo12+1 04/01/2014 [ 68.039941][ T5336] Call Trace: [ 68.039947][ T5336] [ 68.039951][ T5336] dump_stack_lvl+0x189/0x250 [ 68.039964][ T5336] ? __pfx_dump_stack_lvl+0x10/0x10 [ 68.039973][ T5336] ? __pfx__printk+0x10/0x10 [ 68.039983][ T5336] ? __kasan_check_byte+0x12/0x40 [ 68.039993][ T5336] ? print_lock_name+0xde/0x100 [ 68.040005][ T5336] print_deadlock_bug+0x28b/0x2a0 [ 68.040015][ T5336] validate_chain+0x1a3f/0x2140 [ 68.040025][ T5336] ? is_bpf_text_address+0x292/0x2b0 [ 68.040034][ T5336] ? is_bpf_text_address+0x26/0x2b0 [ 68.040041][ T5336] ? look_up_lock_class+0x74/0x170 [ 68.040092][ T5336] ? register_lock_class+0x51/0x320 [ 68.040102][ T5336] __lock_acquire+0xab9/0xd20 [ 68.040114][ T5336] ? hfsplus_get_block+0x39e/0x1530 [ 68.040129][ T5336] lock_acquire+0x120/0x360 [ 68.040140][ T5336] ? hfsplus_get_block+0x39e/0x1530 [ 68.040157][ T5336] ? __pfx_hlock_conflict+0x10/0x10 [ 68.040172][ T5336] __mutex_lock+0x182/0xe80 [ 68.040184][ T5336] ? hfsplus_get_block+0x39e/0x1530 [ 68.040195][ T5336] ? lockdep_unlock+0x89/0x120 [ 68.040204][ T5336] ? validate_chain+0x897/0x2140 [ 68.040215][ T5336] ? hfsplus_get_block+0x39e/0x1530 [ 68.040230][ T5336] ? __pfx___mutex_lock+0x10/0x10 [ 68.040244][ T5336] hfsplus_get_block+0x39e/0x1530 [ 68.040259][ T5336] ? __pfx_hfsplus_get_block+0x10/0x10 [ 68.040268][ T5336] ? do_raw_spin_unlock+0x4d/0x240 [ 68.040278][ T5336] ? _raw_spin_unlock+0x28/0x50 [ 68.040288][ T5336] block_read_full_folio+0x29f/0x830 [ 68.040300][ T5336] ? __pfx_hfsplus_get_block+0x10/0x10 [ 68.040309][ T5336] filemap_read_folio+0x117/0x380 [ 68.040320][ T5336] ? __pfx_hfsplus_read_folio+0x10/0x10 [ 68.040329][ T5336] ? __pfx_filemap_read_folio+0x10/0x10 [ 68.040339][ T5336] ? filemap_add_folio+0x1af/0x270 [ 68.040349][ T5336] do_read_cache_folio+0x350/0x590 [ 68.040360][ T5336] ? __pfx_hfsplus_read_folio+0x10/0x10 [ 68.040369][ T5336] read_cache_page+0x5d/0x170 [ 68.040380][ T5336] hfsplus_block_free+0x121/0x550 [ 68.040389][ T5336] hfsplus_free_extents+0x176/0xae0 [ 68.040400][ T5336] hfsplus_file_truncate+0x736/0xb40 [ 68.040412][ T5336] ? __pfx_hfsplus_file_truncate+0x10/0x10 [ 68.040425][ T5336] ? tomoyo_path_perm+0x1e3/0x4b0 [ 68.040440][ T5336] ? __pfx___mutex_lock+0x10/0x10 [ 68.040451][ T5336] ? __lock_acquire+0xab9/0xd20 [ 68.040462][ T5336] hfsplus_delete_inode+0x180/0x230 [ 68.040478][ T5336] hfsplus_unlink+0x4e3/0x730 [ 68.040488][ T5336] ? vfs_unlink+0xf2/0x650 [ 68.040501][ T5336] ? __pfx_hfsplus_unlink+0x10/0x10 [ 68.040512][ T5336] ? __pfx_down_write+0x10/0x10 [ 68.040524][ T5336] ? bpf_lsm_inode_unlink+0x9/0x20 [ 68.040541][ T5336] vfs_unlink+0x391/0x650 [ 68.040553][ T5336] do_unlinkat+0x350/0x560 [ 68.040561][ T5336] ? __pfx_do_unlinkat+0x10/0x10 [ 68.040569][ T5336] ? getname_flags+0x1e5/0x540 [ 68.040579][ T5336] __x64_sys_unlinkat+0xd3/0xf0 [ 68.040587][ T5336] do_syscall_64+0xfa/0x3b0 [ 68.040595][ T5336] ? lockdep_hardirqs_on+0x9c/0x150 [ 68.040605][ T5336] ? entry_SYSCALL_64_after_hwframe+0x77/0x7f [ 68.040612][ T5336] ? clear_bhb_loop+0x60/0xb0 [ 68.040620][ T5336] entry_SYSCALL_64_after_hwframe+0x77/0x7f [ 68.040627][ T5336] RIP: 0033:0x7f6ab678e929 [ 68.040636][ T5336] Code: ff ff c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 40 00 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 a8 ff ff ff f7 d8 64 89 01 48 [ 68.040642][ T5336] RSP: 002b:00007f6ab75bc038 EFLAGS: 00000246 ORIG_RAX: 0000000000000107 [ 68.040651][ T5336] RAX: ffffffffffffffda RBX: 00007f6ab69b5fa0 RCX: 00007f6ab678e929 [ 68.040657][ T5336] RDX: 0000000000000000 RSI: 0000200000000000 RDI: 000000000000000a [ 68.040661][ T5336] RBP: 00007f6ab6810b39 R08: 0000000000000000 R09: 0000000000000000 [ 68.040666][ T5336] R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000 [ 68.040670][ T5336] R13: 0000000000000000 R14: 00007f6ab69b5fa0 R15: 00007fffc3e531d8 [ 68.040677][ T5336] [ 68.226692][ T5336] hfsplus: unable to mark blocks free: error -5 [ 68.229383][ T5336] hfsplus: can't free extent [ 68.233829][ T5335] hfsplus: invalid extended attribute record [ 68.237226][ T5335] hfsplus: unable to mark blocks free: error -5 [ 68.239781][ T5335] hfsplus: can't free extent