On 2025-08-21 07:08:32 [-0700], syzbot wrote: > dashboard link: https://syzkaller.appspot.com/bug?extid=a725ab460fc1def9896f … > The issue was bisected to: > > commit d2d6422f8bd17c6bb205133e290625a564194496 > Author: Sebastian Andrzej Siewior <bigeasy@xxxxxxxxxxxxx> > Date: Fri Sep 6 10:59:04 2024 +0000 > > x86: Allow to enable PREEMPT_RT. > … > exFAT-fs (loop0): Medium has reported failures. Some data may be lost. > exFAT-fs (loop0): failed to load upcase table (idx : 0x00010000, chksum : 0xe5674ec2, utbl_chksum : 0xe619d30d) > ------------[ cut here ]------------ > rtmutex deadlock detected > WARNING: CPU: 0 PID: 6000 at kernel/locking/rtmutex.c:1674 rt_mutex_handle_deadlock kernel/locking/rtmutex.c:1674 [inline] > WARNING: CPU: 0 PID: 6000 at kernel/locking/rtmutex.c:1674 __rt_mutex_slowlock kernel/locking/rtmutex.c:1734 [inline] > WARNING: CPU: 0 PID: 6000 at kernel/locking/rtmutex.c:1674 __rt_mutex_slowlock_locked+0xed2/0x25e0 kernel/locking/rtmutex.c:1760 RT detected a deadlock and complained. The same testcase on !RT results in: | [ 15.363878] loop0: detected capacity change from 0 to 256 | [ 15.367981] exFAT-fs (loop0): Volume was not properly unmounted. Some data may be corrupt. Please run fsck. | [ 15.373808] exFAT-fs (loop0): Medium has reported failures. Some data may be lost. | [ 15.380396] exFAT-fs (loop0): failed to load upcase table (idx : 0x00010000, chksum : 0xe5674ec2, utbl_chksum : 0xe619d30d) | [ 62.668182] INFO: task exfat-repro:2155 blocked for more than 30 seconds. | [ 62.669405] Not tainted 6.17.0-rc2+ #10 | [ 62.670181] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message. | [ 62.671612] task:exfat-repro state:D stack:0 pid:2155 tgid:2155 ppid:1 task_flags:0x400140 flags:0x00004006 | [ 62.673557] Call Trace: | [ 62.674008] <TASK> | [ 62.674400] __schedule+0x4ef/0xbb0 | [ 62.675069] schedule+0x22/0xd0 | [ 62.675656] schedule_preempt_disabled+0x10/0x20 | [ 62.676495] rwsem_down_write_slowpath+0x1e2/0x6c0 | [ 62.679028] down_write+0x66/0x70 | [ 62.679645] vfs_rename+0x5c6/0xc30 | [ 62.681734] do_renameat2+0x3c4/0x570 | [ 62.682395] __x64_sys_renameat2+0x7b/0xc0 | [ 62.683187] do_syscall_64+0x7f/0x290 | [ 62.695576] entry_SYSCALL_64_after_hwframe+0x76/0x7e After ctrl+c that testcase terminates but one thread remains in D state. This is from | lock_new_subdir = new_dir != old_dir || !(flags & RENAME_EXCHANGE); | if (is_dir) { | if (lock_old_subdir) | inode_lock_nested(source, I_MUTEX_CHILD); ^^^ | 5 locks held by exfat-repro/2156: | #0: ffff888113b69400 (sb_writers#11){.+.+}-{0:0}, at: do_renameat2+0x1c8/0x580 | #1: ffff888113b69710 (&type->s_vfs_rename_key){+.+.}-{4:4}, at: do_renameat2+0x24d/0x580 | #2: ffff88810fb79b88 (&sb->s_type->i_mutex_key#16/1){+.+.}-{4:4}, at: lock_two_directories+0x6c/0x110 | #3: ffff88810fb7a1c0 (&sb->s_type->i_mutex_key#17/5){+.+.}-{4:4}, at: lock_two_directories+0x82/0x110 | #4: ffffffff82f618a0 (rcu_read_lock){....}-{1:3}, at: debug_show_all_locks+0x3d/0x184 #2 and #3 are from the "(r == p1)" case. The lock it appears to acquire is #2. Could an exfat take a look, please? Sebastian