syzbot has found a reproducer for the following issue on:
HEAD commit: 3f8a27f9e27b Linux 4.19.211
git tree: linux-4.19.y
console output:
https://syzkaller.appspot.com/x/log.txt?x=176010bbf00000
kernel config:
https://syzkaller.appspot.com/x/.config?x=9b9277b418617afe
syz repro:
https://syzkaller.appspot.com/x/repro.syz?x=13c1675ff00000
gfs2: G: s:EX n:8/1 f:qb t:EX d:EX/0 a:0 v:0 r:5 m:20
gfs2: H: s:EX f:cH e:0 p:8129 [syz-executor.1] gfs2_glock_nq_init fs/gfs2/glock.h:226 [inline]
gfs2: H: s:EX f:cH e:0 p:8129 [syz-executor.1] do_sync+0x442/0xc90 fs/gfs2/quota.c:896
gfs2: fsid=syz:syz: error -17 adding sysfs files
------------[ cut here ]------------
gfs2: fsid=syz:syz: error -17 adding sysfs files
kernel BUG at fs/gfs2/glock.c:1082!
invalid opcode: 0000 [#1] PREEMPT SMP KASAN
CPU: 0 PID: 8129 Comm: syz-executor.1 Not tainted 4.19.211-syzkaller #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
RIP: 0010:add_to_queue fs/gfs2/glock.c:1082 [inline]
RIP: 0010:gfs2_glock_nq.cold+0x276/0x2cd fs/gfs2/glock.c:1107
Code: 0f b6 04 02 84 c0 74 04 3c 03 7e 6e 8b 73 18 44 89 ea 48 c7 c7 60 4f a6 88 e8 02 57 f8 ff 48 8b 74 24 08 31 ff e8 0b cc 0a fb <0f> 0b e8 74 02 9d f9 4c 8b 04 24 e9 aa fd ff ff 31 ed e9 12 fe ff
RSP: 0018:ffff8880951a7a20 EFLAGS: 00010286
RAX: 0000000000000000 RBX: ffff8880b4ced000 RCX: ffffffff83063ba3
RDX: 0000000000000000 RSI: ffffffff83063bf2 RDI: ffffffff88a67230
RBP: 0000000000001fc1 R08: 0000000000000000 R09: 0000000000000000
R10: 0000000000000001 R11: 0000000000000000 R12: ffff88809a92d470
sysfs: cannot create duplicate filename '/fs/gfs2/syz:syz'
R13: 0000000000000001 R14: 0000000000000000 R15: ffff8880aada1f00
FS: 0000555555fe2400(0000) GS:ffff8880ba000000(0000) knlGS:0000000000000000
CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 00007f1441742000 CR3: 000000009b73b000 CR4: 00000000003406f0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
Call Trace:
CPU: 1 PID: 9715 Comm: syz-executor.2 Not tainted 4.19.211-syzkaller #0
gfs2_glock_nq_init fs/gfs2/glock.h:228 [inline]
do_sync+0x44a/0xc90 fs/gfs2/quota.c:896
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
Call Trace:
__dump_stack lib/dump_stack.c:77 [inline]
dump_stack+0x1fc/0x2ef lib/dump_stack.c:118
sysfs_warn_dup.cold+0x1c/0x29 fs/sysfs/dir.c:30
sysfs_create_dir_ns+0x228/0x280 fs/sysfs/dir.c:63
gfs2_quota_sync+0x5d1/0x780 fs/gfs2/quota.c:1303
gfs2_sync_fs+0x40/0xb0 fs/gfs2/super.c:957
create_dir lib/kobject.c:88 [inline]
kobject_add_internal+0x2a5/0x9c0 lib/kobject.c:247
kobject_add_varg lib/kobject.c:382 [inline]
kobject_init_and_add+0x101/0x160 lib/kobject.c:453
__sync_filesystem fs/sync.c:39 [inline]
sync_filesystem+0x105/0x250 fs/sync.c:64
generic_shutdown_super+0x70/0x370 fs/super.c:442
kill_block_super+0x97/0xf0 fs/super.c:1185
gfs2_sys_fs_add+0x18e/0x440 fs/gfs2/sys.c:659
gfs2_kill_sb+0x12c/0x1a0 fs/gfs2/ops_fstype.c:1390
deactivate_locked_super+0x94/0x160 fs/super.c:329
deactivate_super+0x174/0x1a0 fs/super.c:360
fill_super+0x1240/0x2550 fs/gfs2/ops_fstype.c:1103
cleanup_mnt+0x1a8/0x290 fs/namespace.c:1098
task_work_run+0x148/0x1c0 kernel/task_work.c:113
tracehook_notify_resume include/linux/tracehook.h:193 [inline]
exit_to_usermode_loop+0x251/0x2a0 arch/x86/entry/common.c:167
prepare_exit_to_usermode arch/x86/entry/common.c:198 [inline]
syscall_return_slowpath arch/x86/entry/common.c:271 [inline]
do_syscall_64+0x538/0x620 arch/x86/entry/common.c:296
entry_SYSCALL_64_after_hwframe+0x49/0xbe
RIP: 0033:0x7fba2782b577
gfs2_mount+0x4c0/0x5a0 fs/gfs2/ops_fstype.c:1316
Code: ff ff ff f7 d8 64 89 01 48 83 c8 ff c3 66 0f 1f 44 00 00 31 f6 e9 09 00 00 00 66 0f 1f 84 00 00 00 00 00 b8 a6 00 00 00 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:00007ffde07f6a08 EFLAGS: 00000246 ORIG_RAX: 00000000000000a6
RAX: 0000000000000000 RBX: 0000000000000000 RCX: 00007fba2782b577
RDX: 00007ffde07f6ad9 RSI: 000000000000000a RDI: 00007ffde07f6ad0
RBP: 00007ffde07f6ad0 R08: 00000000ffffffff R09: 00007ffde07f68a0
mount_fs+0xa3/0x310 fs/super.c:1261
R10: 0000555555fe3903 R11: 0000000000000246 R12: 00007fba27883218
vfs_kern_mount.part.0+0x68/0x470 fs/namespace.c:961
R13: 00007ffde07f7b90 R14: 0000555555fe3810 R15: 00007ffde07f7bd0
vfs_kern_mount fs/namespace.c:951 [inline]
do_new_mount fs/namespace.c:2492 [inline]
do_mount+0x115c/0x2f50 fs/namespace.c:2822
Modules linked in:
---[ end trace e6215c0d55bcb798 ]---
RIP: 0010:add_to_queue fs/gfs2/glock.c:1082 [inline]
RIP: 0010:gfs2_glock_nq.cold+0x276/0x2cd fs/gfs2/glock.c:1107
ksys_mount+0xcf/0x130 fs/namespace.c:3038
__do_sys_mount fs/namespace.c:3052 [inline]
__se_sys_mount fs/namespace.c:3049 [inline]
__x64_sys_mount+0xba/0x150 fs/namespace.c:3049
do_syscall_64+0xf9/0x620 arch/x86/entry/common.c:293
entry_SYSCALL_64_after_hwframe+0x49/0xbe
RIP: 0033:0x7f1441fcd63a
Code: 48 c7 c2 b8 ff ff ff f7 d8 64 89 02 b8 ff ff ff ff eb d2 e8 b8 04 00 00 0f 1f 84 00 00 00 00 00 49 89 ca b8 a5 00 00 00 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:00007f1441740f88 EFLAGS: 00000246 ORIG_RAX: 00000000000000a5
RAX: ffffffffffffffda RBX: 0000000020000200 RCX: 00007f1441fcd63a
RDX: 0000000020000000 RSI: 0000000020000100 RDI: 00007f1441740fe0
RBP: 00007f1441741020 R08: 00007f1441741020 R09: 0000000020000000
R10: 0000000000000000 R11: 0000000000000246 R12: 0000000020000000
R13: 0000000020000100 R14: 00007f1441740fe0 R15: 0000000020047a20
kobject_add_internal failed for syz:syz with -EEXIST, don't try to register things with the same name in the same directory.
Code: 0f b6 04 02 84 c0 74 04 3c 03 7e 6e 8b 73 18 44 89 ea 48 c7 c7 60 4f a6 88 e8 02 57 f8 ff 48 8b 74 24 08 31 ff e8 0b cc 0a fb <0f> 0b e8 74 02 9d f9 4c 8b 04 24 e9 aa fd ff ff 31 ed e9 12 fe ff
RSP: 0018:ffff8880951a7a20 EFLAGS: 00010286
RAX: 0000000000000000 RBX: ffff8880b4ced000 RCX: ffffffff83063ba3
RDX: 0000000000000000 RSI: ffffffff83063bf2 RDI: ffffffff88a67230
gfs2: fsid=syz:syz: error -17 adding sysfs files
RBP: 0000000000001fc1 R08: 0000000000000000 R09: 0000000000000000
R10: 0000000000000001 R11: 0000000000000000 R12: ffff88809a92d470
R13: 0000000000000001 R14: 0000000000000000 R15: ffff8880aada1f00
FS: 0000555555fe2400(0000) GS:ffff8880ba000000(0000) knlGS:0000000000000000
CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 00007f1441742000 CR3: 000000009b73b000 CR4: 00000000003406f0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
----------------
Code disassembly (best guess), 2 bytes skipped:
0: ff f7 push %rdi
2: d8 64 89 01 fsubs 0x1(%rcx,%rcx,4)
6: 48 83 c8 ff or $0xffffffffffffffff,%rax
a: c3 retq
b: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1)
11: 31 f6 xor %esi,%esi
13: e9 09 00 00 00 jmpq 0x21
18: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1)
1f: 00 00
21: b8 a6 00 00 00 mov $0xa6,%eax
26: 0f 05 syscall
* 28: 48 3d 01 f0 ff ff cmp $0xfffffffffffff001,%rax <-- trapping instruction
2e: 73 01 jae 0x31
30: c3 retq
31: 48 c7 c1 b8 ff ff ff mov $0xffffffffffffffb8,%rcx
38: f7 d8 neg %eax
3a: 64 89 01 mov %eax,%fs:(%rcx)
3d: 48 rex.W