All of lore.kernel.org
 help / color / mirror / Atom feed
From: syzbot <syzbot+78359d5fbb04318c35e9@syzkaller.appspotmail.com>
To: jlbec@evilplan.org, joseph.qi@linux.alibaba.com,
	 linux-kernel@vger.kernel.org, mark@fasheh.com,
	ocfs2-devel@lists.linux.dev,  syzkaller-bugs@googlegroups.com
Subject: Re: [syzbot] [ocfs2?] possible deadlock in ocfs2_del_inode_from_orphan
Date: Thu, 19 Dec 2024 00:16:27 -0800	[thread overview]
Message-ID: <6763d65b.050a0220.3157ee.0011.GAE@google.com> (raw)
In-Reply-To: <66fdfef3.050a0220.9ec68.0031.GAE@google.com>

syzbot has found a reproducer for the following issue on:

HEAD commit:    c061cf420ded Merge tag 'trace-v6.13-rc3' of git://git.kern..
git tree:       upstream
console+strace: https://syzkaller.appspot.com/x/log.txt?x=10cc2e0f980000
kernel config:  https://syzkaller.appspot.com/x/.config?x=6a2b862bf4a5409f
dashboard link: https://syzkaller.appspot.com/bug?extid=78359d5fbb04318c35e9
compiler:       Debian clang version 15.0.6, GNU ld (GNU Binutils for Debian) 2.40
syz repro:      https://syzkaller.appspot.com/x/repro.syz?x=113277e8580000
C reproducer:   https://syzkaller.appspot.com/x/repro.c?x=17bdef44580000

Downloadable assets:
disk image: https://storage.googleapis.com/syzbot-assets/d015858e49d6/disk-c061cf42.raw.xz
vmlinux: https://storage.googleapis.com/syzbot-assets/8af783cbffc2/vmlinux-c061cf42.xz
kernel image: https://storage.googleapis.com/syzbot-assets/33b1bb739ed8/bzImage-c061cf42.xz
mounted in repro: https://storage.googleapis.com/syzbot-assets/9303ddff3347/mount_0.gz

IMPORTANT: if you fix the issue, please add the following tag to the commit:
Reported-by: syzbot+78359d5fbb04318c35e9@syzkaller.appspotmail.com

ocfs2: Mounting device (7,0) on (node local, slot 0) with ordered data mode.
======================================================
WARNING: possible circular locking dependency detected
6.13.0-rc3-syzkaller-00062-gc061cf420ded #0 Not tainted
------------------------------------------------------
syz-executor257/6003 is trying to acquire lock:
ffff88806f6d5100 (&ocfs2_sysfile_lock_key[args->fi_sysfile_type]){+.+.}-{4:4}, at: inode_lock include/linux/fs.h:818 [inline]
ffff88806f6d5100 (&ocfs2_sysfile_lock_key[args->fi_sysfile_type]){+.+.}-{4:4}, at: ocfs2_del_inode_from_orphan+0x159/0x800 fs/ocfs2/namei.c:2728

but task is already holding lock:
ffff888076616a20 (&ocfs2_quota_ip_alloc_sem_key){++++}-{4:4}, at: ocfs2_dio_end_io_write fs/ocfs2/aops.c:2321 [inline]
ffff888076616a20 (&ocfs2_quota_ip_alloc_sem_key){++++}-{4:4}, at: ocfs2_dio_end_io+0x44a/0x1250 fs/ocfs2/aops.c:2427

which lock already depends on the new lock.


the existing dependency chain (in reverse order) is:

-> #3 (&ocfs2_quota_ip_alloc_sem_key){++++}-{4:4}:
       lock_acquire+0x1ed/0x550 kernel/locking/lockdep.c:5849
       down_write+0x99/0x220 kernel/locking/rwsem.c:1577
       ocfs2_create_local_dquot+0x1de/0x1d70 fs/ocfs2/quota_local.c:1231
       ocfs2_acquire_dquot+0x833/0xb70 fs/ocfs2/quota_global.c:878
       dqget+0x772/0xeb0 fs/quota/dquot.c:977
       __dquot_initialize+0x2e3/0xec0 fs/quota/dquot.c:1505
       ocfs2_get_init_inode+0x158/0x1d0 fs/ocfs2/namei.c:202
       ocfs2_mknod+0xcfa/0x2b30 fs/ocfs2/namei.c:310
       ocfs2_mkdir+0x1ab/0x470 fs/ocfs2/namei.c:657
       vfs_mkdir+0x2fb/0x4f0 fs/namei.c:4311
       do_mkdirat+0x264/0x3a0 fs/namei.c:4334
       __do_sys_mkdir fs/namei.c:4354 [inline]
       __se_sys_mkdir fs/namei.c:4352 [inline]
       __x64_sys_mkdir+0x6c/0x80 fs/namei.c:4352
       do_syscall_x64 arch/x86/entry/common.c:52 [inline]
       do_syscall_64+0xf3/0x230 arch/x86/entry/common.c:83
       entry_SYSCALL_64_after_hwframe+0x77/0x7f

-> #2 (&dquot->dq_lock){+.+.}-{4:4}:
       lock_acquire+0x1ed/0x550 kernel/locking/lockdep.c:5849
       __mutex_lock_common kernel/locking/mutex.c:585 [inline]
       __mutex_lock+0x1ac/0xee0 kernel/locking/mutex.c:735
       wait_on_dquot fs/quota/dquot.c:354 [inline]
       dqget+0x6e6/0xeb0 fs/quota/dquot.c:972
       __dquot_initialize+0x2e3/0xec0 fs/quota/dquot.c:1505
       ocfs2_get_init_inode+0x158/0x1d0 fs/ocfs2/namei.c:202
       ocfs2_mknod+0xcfa/0x2b30 fs/ocfs2/namei.c:310
       ocfs2_mkdir+0x1ab/0x470 fs/ocfs2/namei.c:657
       vfs_mkdir+0x2fb/0x4f0 fs/namei.c:4311
       do_mkdirat+0x264/0x3a0 fs/namei.c:4334
       __do_sys_mkdir fs/namei.c:4354 [inline]
       __se_sys_mkdir fs/namei.c:4352 [inline]
       __x64_sys_mkdir+0x6c/0x80 fs/namei.c:4352
       do_syscall_x64 arch/x86/entry/common.c:52 [inline]
       do_syscall_64+0xf3/0x230 arch/x86/entry/common.c:83
       entry_SYSCALL_64_after_hwframe+0x77/0x7f

-> #1 (&ocfs2_sysfile_lock_key[args->fi_sysfile_type]#2){+.+.}-{4:4}:
       lock_acquire+0x1ed/0x550 kernel/locking/lockdep.c:5849
       down_write+0x99/0x220 kernel/locking/rwsem.c:1577
       inode_lock include/linux/fs.h:818 [inline]
       ocfs2_remove_inode fs/ocfs2/inode.c:655 [inline]
       ocfs2_wipe_inode fs/ocfs2/inode.c:818 [inline]
       ocfs2_delete_inode fs/ocfs2/inode.c:1079 [inline]
       ocfs2_evict_inode+0x209f/0x4630 fs/ocfs2/inode.c:1216
       evict+0x4ea/0x9a0 fs/inode.c:796
       d_delete_notify include/linux/fsnotify.h:332 [inline]
       vfs_rmdir+0x3d7/0x510 fs/namei.c:4407
       do_rmdir+0x3b5/0x580 fs/namei.c:4453
       __do_sys_unlinkat fs/namei.c:4629 [inline]
       __se_sys_unlinkat fs/namei.c:4623 [inline]
       __x64_sys_unlinkat+0xde/0xf0 fs/namei.c:4623
       do_syscall_x64 arch/x86/entry/common.c:52 [inline]
       do_syscall_64+0xf3/0x230 arch/x86/entry/common.c:83
       entry_SYSCALL_64_after_hwframe+0x77/0x7f

-> #0 (&ocfs2_sysfile_lock_key[args->fi_sysfile_type]){+.+.}-{4:4}:
       check_prev_add kernel/locking/lockdep.c:3161 [inline]
       check_prevs_add kernel/locking/lockdep.c:3280 [inline]
       validate_chain+0x18ef/0x5920 kernel/locking/lockdep.c:3904
       __lock_acquire+0x1397/0x2100 kernel/locking/lockdep.c:5226
       lock_acquire+0x1ed/0x550 kernel/locking/lockdep.c:5849
       down_write+0x99/0x220 kernel/locking/rwsem.c:1577
       inode_lock include/linux/fs.h:818 [inline]
       ocfs2_del_inode_from_orphan+0x159/0x800 fs/ocfs2/namei.c:2728
       ocfs2_dio_end_io_write fs/ocfs2/aops.c:2329 [inline]
       ocfs2_dio_end_io+0x55b/0x1250 fs/ocfs2/aops.c:2427
       dio_complete+0x253/0x6b0 fs/direct-io.c:281
       __blockdev_direct_IO+0x3eb6/0x4890 fs/direct-io.c:1303
       ocfs2_direct_IO+0x255/0x2c0 fs/ocfs2/aops.c:2464
       generic_file_direct_write+0x1e8/0x400 mm/filemap.c:3978
       __generic_file_write_iter+0x126/0x230 mm/filemap.c:4142
       ocfs2_file_write_iter+0x19af/0x2180 fs/ocfs2/file.c:2469
       new_sync_write fs/read_write.c:586 [inline]
       vfs_write+0xaed/0xd30 fs/read_write.c:679
       ksys_write+0x18f/0x2b0 fs/read_write.c:731
       do_syscall_x64 arch/x86/entry/common.c:52 [inline]
       do_syscall_64+0xf3/0x230 arch/x86/entry/common.c:83
       entry_SYSCALL_64_after_hwframe+0x77/0x7f

other info that might help us debug this:

Chain exists of:
  &ocfs2_sysfile_lock_key[args->fi_sysfile_type] --> &dquot->dq_lock --> &ocfs2_quota_ip_alloc_sem_key

 Possible unsafe locking scenario:

       CPU0                    CPU1
       ----                    ----
  lock(&ocfs2_quota_ip_alloc_sem_key);
                               lock(&dquot->dq_lock);
                               lock(&ocfs2_quota_ip_alloc_sem_key);
  lock(&ocfs2_sysfile_lock_key[args->fi_sysfile_type]);

 *** DEADLOCK ***

3 locks held by syz-executor257/6003:
 #0: ffff88807cfd6420 (sb_writers#9){.+.+}-{0:0}, at: file_start_write include/linux/fs.h:2964 [inline]
 #0: ffff88807cfd6420 (sb_writers#9){.+.+}-{0:0}, at: vfs_write+0x225/0xd30 fs/read_write.c:675
 #1: ffff888076616d80 (&sb->s_type->i_mutex_key#15){+.+.}-{4:4}, at: inode_lock include/linux/fs.h:818 [inline]
 #1: ffff888076616d80 (&sb->s_type->i_mutex_key#15){+.+.}-{4:4}, at: ocfs2_file_write_iter+0x445/0x2180 fs/ocfs2/file.c:2399
 #2: ffff888076616a20 (&ocfs2_quota_ip_alloc_sem_key){++++}-{4:4}, at: ocfs2_dio_end_io_write fs/ocfs2/aops.c:2321 [inline]
 #2: ffff888076616a20 (&ocfs2_quota_ip_alloc_sem_key){++++}-{4:4}, at: ocfs2_dio_end_io+0x44a/0x1250 fs/ocfs2/aops.c:2427

stack backtrace:
CPU: 0 UID: 0 PID: 6003 Comm: syz-executor257 Not tainted 6.13.0-rc3-syzkaller-00062-gc061cf420ded #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 11/25/2024
Call Trace:
 <TASK>
 __dump_stack lib/dump_stack.c:94 [inline]
 dump_stack_lvl+0x241/0x360 lib/dump_stack.c:120
 print_circular_bug+0x13a/0x1b0 kernel/locking/lockdep.c:2074
 check_noncircular+0x36a/0x4a0 kernel/locking/lockdep.c:2206
 check_prev_add kernel/locking/lockdep.c:3161 [inline]
 check_prevs_add kernel/locking/lockdep.c:3280 [inline]
 validate_chain+0x18ef/0x5920 kernel/locking/lockdep.c:3904
 __lock_acquire+0x1397/0x2100 kernel/locking/lockdep.c:5226
 lock_acquire+0x1ed/0x550 kernel/locking/lockdep.c:5849
 down_write+0x99/0x220 kernel/locking/rwsem.c:1577
 inode_lock include/linux/fs.h:818 [inline]
 ocfs2_del_inode_from_orphan+0x159/0x800 fs/ocfs2/namei.c:2728
 ocfs2_dio_end_io_write fs/ocfs2/aops.c:2329 [inline]
 ocfs2_dio_end_io+0x55b/0x1250 fs/ocfs2/aops.c:2427
 dio_complete+0x253/0x6b0 fs/direct-io.c:281
 __blockdev_direct_IO+0x3eb6/0x4890 fs/direct-io.c:1303
 ocfs2_direct_IO+0x255/0x2c0 fs/ocfs2/aops.c:2464
 generic_file_direct_write+0x1e8/0x400 mm/filemap.c:3978
 __generic_file_write_iter+0x126/0x230 mm/filemap.c:4142
 ocfs2_file_write_iter+0x19af/0x2180 fs/ocfs2/file.c:2469
 new_sync_write fs/read_write.c:586 [inline]
 vfs_write+0xaed/0xd30 fs/read_write.c:679
 ksys_write+0x18f/0x2b0 fs/read_write.c:731
 do_syscall_x64 arch/x86/entry/common.c:52 [inline]
 do_syscall_64+0xf3/0x230 arch/x86/entry/common.c:83
 entry_SYSCALL_64_after_hwframe+0x77/0x7f
RIP: 0033:0x7f84076eb969
Code: 28 00 00 00 75 05 48 83 c4 28 c3 e8 21 18 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:00007ffe891e4fb8 EFLAGS: 00000246 ORIG_RAX: 0000000000000001
RAX: ffffffffffffffda RBX: 0000000000000003 RCX: 00007f84076eb969
RDX: 000000000000f000 RSI: 0000000020000200 RDI: 0000000000000006
RBP: 0000000000000000 R08: 00007ffe891e4d57 R09: 00007ffe891e4fec
R10: 0000000000000012 R11: 0000000000000246 R12: 00007ffe891e4fec
R13: 000000000000002b R14: 431bde82d7b634db R15: 00007ffe891e5020
 </TASK>


---
If you want syzbot to run the reproducer, reply with:
#syz test: git://repo/address.git branch-or-commit-hash
If you attach or paste a git patch, syzbot will apply it before testing.

  reply	other threads:[~2024-12-19  8:16 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-10-03  2:18 [syzbot] [ocfs2?] possible deadlock in ocfs2_del_inode_from_orphan syzbot
2024-12-19  8:16 ` syzbot [this message]
2026-01-06 11:30 ` Syzbot test for ocfs2: Fix " Prithvi Tambewagh
2026-01-06 11:59   ` [syzbot] [ocfs2?] possible " syzbot
2026-02-23  3:38 ` Forwarded: Syzbot test for v2: ocfs2: clear lock identity upon inode eviction syzbot
2026-02-23  4:31 ` syzbot
2026-02-24  5:28 ` Forwarded: test patch syzbot
2026-02-24  6:35 ` syzbot
2026-03-02  5:31 ` syzbot
     [not found] <20260223033802.13422-1-activprithvi@gmail.com>
2026-02-23  3:51 ` [syzbot] [ocfs2?] possible deadlock in ocfs2_del_inode_from_orphan syzbot
     [not found] <20260223035943.22844-1-activprithvi@gmail.com>
2026-02-23  4:56 ` syzbot
     [not found] <oh26fpojbfgcs5gljzjz4vaqlqloz7wqnhlmdmlqzwnrvk7uyr@cxa3ek5uiy6t>
2026-02-24  5:46 ` syzbot
     [not found] <dvzyokzoiuibgprc7aoz5myhf4ml7w44swrwclqnpxwybckjdl@kvmw645tetpv>
2026-02-24  7:00 ` syzbot
     [not found] <a7w3563ajutp2yexhvpwdntif75zuyxn76yezxs7sa5r4fgbzg@ro7v6isoyp4e>
2026-03-02  5:53 ` syzbot

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=6763d65b.050a0220.3157ee.0011.GAE@google.com \
    --to=syzbot+78359d5fbb04318c35e9@syzkaller.appspotmail.com \
    --cc=jlbec@evilplan.org \
    --cc=joseph.qi@linux.alibaba.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mark@fasheh.com \
    --cc=ocfs2-devel@lists.linux.dev \
    --cc=syzkaller-bugs@googlegroups.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.