INFO: task hung in floppy_revalidate

From: Wei Chen
Date: Mon Oct 10 2022 - 08:54:07 EST


Dear Linux Developer,

Recently when using our tool to fuzz kernel, the following crash was triggered:

HEAD commit: 64570fbc14f8 Linux 5.15-rc5
git tree: upstream
compiler: clang 12.0.0
console output:
https://drive.google.com/file/d/1RCnUEZWaVSMoTGbCMwoT5opyJYzOyz1Q/view?usp=sharing
kernel config: https://drive.google.com/file/d/1lNwvovjLNrcuyFGrg05IoSmgO5jaKBBJ/view?usp=sharing

Unfortunately, I don't have any reproducer for this crash yet.

IMPORTANT: if you fix the bug, please add the following tag to the commit:
Reported-by: Wei Chen <harperchen1110@xxxxxxxxx>

INFO: task syz-executor:8550 blocked for more than 143 seconds.
Not tainted 5.15.0-rc5+ #14
"echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
task:syz-executor state:D stack:23192 pid: 8550 ppid: 6613 flags:0x00004004
Call Trace:
context_switch kernel/sched/core.c:4940 [inline]
__schedule+0xc1a/0x11e0 kernel/sched/core.c:6287
schedule+0x14b/0x210 kernel/sched/core.c:6366
schedule_timeout+0x98/0x310 kernel/time/timer.c:1857
do_wait_for_common+0x2da/0x480 kernel/sched/completion.c:85
__wait_for_common kernel/sched/completion.c:106 [inline]
wait_for_common kernel/sched/completion.c:117 [inline]
wait_for_completion+0x48/0x60 kernel/sched/completion.c:138
__floppy_read_block_0 drivers/block/floppy.c:4144 [inline]
floppy_revalidate+0xd2e/0x1280 drivers/block/floppy.c:4188
floppy_open+0x70b/0x1220 drivers/block/floppy.c:4038
blkdev_get_whole+0x9a/0x430 block/bdev.c:668
blkdev_get_by_dev+0x296/0xcb0 block/bdev.c:823
blkdev_open+0x133/0x2d0 block/fops.c:448
do_dentry_open+0x839/0x1080 fs/open.c:822
do_open fs/namei.c:3428 [inline]
path_openat+0x28b0/0x3870 fs/namei.c:3561
do_filp_open+0x258/0x4d0 fs/namei.c:3588
do_sys_openat2+0x133/0x520 fs/open.c:1200
do_sys_open fs/open.c:1216 [inline]
__do_sys_openat fs/open.c:1232 [inline]
__se_sys_openat fs/open.c:1227 [inline]
__x64_sys_openat+0x249/0x290 fs/open.c:1227
do_syscall_x64 arch/x86/entry/common.c:50 [inline]
do_syscall_64+0x3d/0xb0 arch/x86/entry/common.c:80
entry_SYSCALL_64_after_hwframe+0x44/0xae
RIP: 0033:0x7f37347325b4
RSP: 002b:00007f3731cf3780 EFLAGS: 00000293 ORIG_RAX: 0000000000000101
RAX: ffffffffffffffda RBX: 6666666666666667 RCX: 00007f37347325b4
RDX: 0000000000006400 RSI: 00007f3731cf3820 RDI: 00000000ffffff9c
RBP: 00007f3731cf3820 R08: 0000000000000000 R09: 0000000000000000
R10: 0000000000000000 R11: 0000000000000293 R12: 0000000000006400
R13: 00007ffffcce873f R14: 00007ffffcce88e0 R15: 00007f3731cf3dc0
INFO: task syz-executor:8551 blocked for more than 143 seconds.
Not tainted 5.15.0-rc5+ #14
"echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
task:syz-executor state:D stack:26576 pid: 8551 ppid: 6613 flags:0x00004004
Call Trace:
context_switch kernel/sched/core.c:4940 [inline]
__schedule+0xc1a/0x11e0 kernel/sched/core.c:6287
schedule+0x14b/0x210 kernel/sched/core.c:6366
schedule_preempt_disabled+0xf/0x20 kernel/sched/core.c:6425
__mutex_lock_common+0xcff/0x2630 kernel/locking/mutex.c:669
__mutex_lock kernel/locking/mutex.c:729 [inline]
mutex_lock_nested+0x17/0x20 kernel/locking/mutex.c:743
blkdev_get_by_dev+0x107/0xcb0 block/bdev.c:816
blkdev_open+0x133/0x2d0 block/fops.c:448
do_dentry_open+0x839/0x1080 fs/open.c:822
do_open fs/namei.c:3428 [inline]
path_openat+0x28b0/0x3870 fs/namei.c:3561
do_filp_open+0x258/0x4d0 fs/namei.c:3588
do_sys_openat2+0x133/0x520 fs/open.c:1200
do_sys_open fs/open.c:1216 [inline]
__do_sys_openat fs/open.c:1232 [inline]
__se_sys_openat fs/open.c:1227 [inline]
__x64_sys_openat+0x249/0x290 fs/open.c:1227
do_syscall_x64 arch/x86/entry/common.c:50 [inline]
do_syscall_64+0x3d/0xb0 arch/x86/entry/common.c:80
entry_SYSCALL_64_after_hwframe+0x44/0xae
RIP: 0033:0x7f37347325b4
RSP: 002b:00007f3731cd2780 EFLAGS: 00000293 ORIG_RAX: 0000000000000101
RAX: ffffffffffffffda RBX: 6666666666666667 RCX: 00007f37347325b4
RDX: 0000000000006400 RSI: 00007f3731cd2820 RDI: 00000000ffffff9c
RBP: 00007f3731cd2820 R08: 0000000000000000 R09: 0000000000000000
R10: 0000000000000000 R11: 0000000000000293 R12: 0000000000006400
R13: 00007ffffcce873f R14: 00007ffffcce88e0 R15: 00007f3731cd2dc0

Showing all locks held in the system:
1 lock held by khungtaskd/21:
#0: ffffffff8cf1c040 (rcu_read_lock){....}-{1:2}, at: rcu_lock_acquire+0x0/0x30
1 lock held by in:imklog/6512:
#0: ffff88801de005f0 (&f->f_pos_lock){+.+.}-{3:3}, at:
__fdget_pos+0x26c/0x310 fs/file.c:990
3 locks held by syz-executor/8550:
#0: ffff888019e12918 (&disk->open_mutex){+.+.}-{3:3}, at:
blkdev_get_by_dev+0x107/0xcb0 block/bdev.c:816
#1: ffffffff8d69b1a8 (floppy_mutex){+.+.}-{3:3}, at:
floppy_open+0x7f/0x1220 drivers/block/floppy.c:3974
#2: ffffffff8d69b268 (open_lock){+.+.}-{3:3}, at:
floppy_open+0x8d/0x1220 drivers/block/floppy.c:3975
1 lock held by syz-executor/8551:
#0: ffff888019e12918 (&disk->open_mutex){+.+.}-{3:3}, at:
blkdev_get_by_dev+0x107/0xcb0 block/bdev.c:816
1 lock held by syz-executor/8812:
#0: ffff888019e12918 (&disk->open_mutex){+.+.}-{3:3}, at:
blkdev_get_by_dev+0x107/0xcb0 block/bdev.c:816
1 lock held by syz-executor/8813:
#0: ffff888019e12918 (&disk->open_mutex){+.+.}-{3:3}, at:
blkdev_get_by_dev+0x107/0xcb0 block/bdev.c:816
2 locks held by kworker/u2:8/9312:
1 lock held by syz-executor/9536:
#0: ffff888019e12918 (&disk->open_mutex){+.+.}-{3:3}, at:
blkdev_get_by_dev+0x107/0xcb0 block/bdev.c:816
1 lock held by syz-executor/9537:
#0: ffff888019e12918 (&disk->open_mutex){+.+.}-{3:3}, at:
blkdev_get_by_dev+0x107/0xcb0 block/bdev.c:816

=============================================

NMI backtrace for cpu 0
CPU: 0 PID: 21 Comm: khungtaskd Not tainted 5.15.0-rc5+ #14
Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS
1.13.0-1ubuntu1.1 04/01/2014
Call Trace:
__dump_stack lib/dump_stack.c:88 [inline]
dump_stack_lvl+0x1d8/0x2c4 lib/dump_stack.c:106
nmi_cpu_backtrace+0x452/0x480 lib/nmi_backtrace.c:105
nmi_trigger_cpumask_backtrace+0x1a3/0x330 lib/nmi_backtrace.c:62
trigger_all_cpu_backtrace include/linux/nmi.h:146 [inline]
check_hung_uninterruptible_tasks kernel/hung_task.c:210 [inline]
watchdog+0xdbe/0xe30 kernel/hung_task.c:295
kthread+0x419/0x510 kernel/kthread.c:319
ret_from_fork+0x1f/0x30

Best,
Wei