kernel BUG in jfs_evict_inode

From: Sanan Hasanov
Date: Thu Sep 07 2023 - 17:20:56 EST


Good day, dear maintainers,

We found a bug using a modified kernel configuration file used by syzbot.

We enhanced the coverage of the configuration file using our tool, klocalizer.

Kernel Branch: 6.3.0-next-20230426
Kernel Config: https://drive.google.com/file/d/16JKx3e-lqX9uQFDinkLwGNE9YWGyNH3o/view?usp=sharing
Reproducer: https://drive.google.com/file/d/1OPF8Di2dWSX10ejBfqopxpBU0BIZyqWW/view?usp=sharing

Thank you!

Best regards,
Sanan Hasanov

------------[ cut here ]------------
kernel BUG at fs/jfs/inode.c:169!
invalid opcode: 0000 [#1] PREEMPT SMP KASAN
CPU: 0 PID: 4961 Comm: syz-executor.7 Not tainted 6.3.0-next-20230426 #1
Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.15.0-1 04/01/2014
RIP: 0010:jfs_evict_inode+0x3eb/0x4b0 fs/jfs/inode.c:169
Code: 7c 24 80 00 74 0d e8 a4 6c a9 fe 48 89 df e8 fc 5f 02 00 e8 97 6c a9 fe 48 89 df e8 af e4 28 ff e9 e3 fc ff ff e8 85 6c a9 fe <0f> 0b 48 c7 c7 20 67 2c 8c e8 67 a5 f9 fe e9 44 fc ff ff e8 5d a5
RSP: 0018:ffffc9000b6578e8 EFLAGS: 00010293
RAX: 0000000000000000 RBX: ffff888076d0d770 RCX: 0000000000000000
RDX: ffff8880467cbb80 RSI: ffffffff82d81bab RDI: ffff888076d0d760
RBP: ffff888076d0d3f8 R08: 0000000000000005 R09: 0000000000000000
R10: 0000000000000000 R11: 0000000000000001 R12: ffff888076d0d848
R13: ffff888076d0d798 R14: ffffffff8a084920 R15: ffff88807d8f8a00
FS: 0000000000000000(0000) GS:ffff888119c00000(0000) knlGS:0000000000000000
CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 00007ffc88d736c0 CR3: 000000007cee3000 CR4: 0000000000350ef0
Call Trace:
<TASK>
evict+0x2ed/0x6b0 fs/inode.c:665
dispose_list+0x117/0x1e0 fs/inode.c:698
evict_inodes+0x345/0x440 fs/inode.c:748
generic_shutdown_super+0xaf/0x480 fs/super.c:479
kill_block_super+0xa1/0x100 fs/super.c:1407
deactivate_locked_super+0x98/0x160 fs/super.c:331
deactivate_super+0xb1/0xd0 fs/super.c:362
cleanup_mnt+0x2ae/0x3d0 fs/namespace.c:1177
task_work_run+0x168/0x260 kernel/task_work.c:179
exit_task_work include/linux/task_work.h:38 [inline]
do_exit+0xb07/0x29f0 kernel/exit.c:871
do_group_exit+0xd4/0x2a0 kernel/exit.c:1021
get_signal+0x2311/0x25c0 kernel/signal.c:2874
arch_do_signal_or_restart+0x79/0x5a0 arch/x86/kernel/signal.c:307
exit_to_user_mode_loop kernel/entry/common.c:168 [inline]
exit_to_user_mode_prepare+0x11f/0x240 kernel/entry/common.c:204
irqentry_exit_to_user_mode+0x9/0x40 kernel/entry/common.c:310
exc_page_fault+0xc4/0x180 arch/x86/mm/fault.c:1615
asm_exc_page_fault+0x26/0x30 arch/x86/include/asm/idtentry.h:570
RIP: 0033:0x7f4acfa8edd5
Code: Unable to access opcode bytes at 0x7f4acfa8edab.
RSP: 002b:00000000fffffe80 EFLAGS: 00010217
RAX: 0000000000000000 RBX: 00007f4acfbbbf80 RCX: 00007f4acfa8edcd
RDX: 0000000000000000 RSI: 00000000fffffe80 RDI: 0000000058208080
RBP: 00007f4acfafc59c R08: 0000000000000000 R09: 0000000000000000
R10: 0000000000000000 R11: 0000000000000202 R12: 0000000000000000
R13: 00007ffe57fcc43f R14: 00007ffe57fcc5e0 R15: 00007f4ace9fdd80
</TASK>
Modules linked in:
---[ end trace 0000000000000000 ]---
RIP: 0010:jfs_evict_inode+0x3eb/0x4b0 fs/jfs/inode.c:169
Code: 7c 24 80 00 74 0d e8 a4 6c a9 fe 48 89 df e8 fc 5f 02 00 e8 97 6c a9 fe 48 89 df e8 af e4 28 ff e9 e3 fc ff ff e8 85 6c a9 fe <0f> 0b 48 c7 c7 20 67 2c 8c e8 67 a5 f9 fe e9 44 fc ff ff e8 5d a5
RSP: 0018:ffffc9000b6578e8 EFLAGS: 00010293
RAX: 0000000000000000 RBX: ffff888076d0d770 RCX: 0000000000000000
RDX: ffff8880467cbb80 RSI: ffffffff82d81bab RDI: ffff888076d0d760
RBP: ffff888076d0d3f8 R08: 0000000000000005 R09: 0000000000000000
R10: 0000000000000000 R11: 0000000000000001 R12: ffff888076d0d848
R13: ffff888076d0d798 R14: ffffffff8a084920 R15: ffff88807d8f8a00
FS: 0000000000000000(0000) GS:ffff888119c00000(0000) knlGS:0000000000000000
CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 00007ffc88d736c0 CR3: 000000007cee3000 CR4: 0000000000350ef0