[syzbot] general protection fault in detach_extent_buffer_page (3)

From: syzbot
Date: Mon Dec 19 2022 - 04:05:52 EST


Hello,

syzbot found the following issue on:

HEAD commit: e2ca6ba6ba01 Merge tag 'mm-stable-2022-12-13' of git://git..
git tree: upstream
console output: https://syzkaller.appspot.com/x/log.txt?x=141d9ad0480000
kernel config: https://syzkaller.appspot.com/x/.config?x=ca14f57f6fb6faa7
dashboard link: https://syzkaller.appspot.com/bug?extid=0c9e903ba426fae1f88d
compiler: gcc (Debian 10.2.1-6) 10.2.1 20210110, GNU ld (GNU Binutils for Debian) 2.35.2

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

IMPORTANT: if you fix the issue, please add the following tag to the commit:
Reported-by: syzbot+0c9e903ba426fae1f88d@xxxxxxxxxxxxxxxxxxxxxxxxx

general protection fault, probably for non-canonical address 0xdffffc000000003d: 0000 [#1] PREEMPT SMP KASAN
KASAN: null-ptr-deref in range [0x00000000000001e8-0x00000000000001ef]
CPU: 1 PID: 45 Comm: kcompactd0 Not tainted 6.1.0-syzkaller-09941-ge2ca6ba6ba01 #0
Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.14.0-2 04/01/2014
RIP: 0010:__lock_acquire+0xd83/0x56d0 kernel/locking/lockdep.c:4925
Code: 3d 0f 41 bf 01 00 00 00 0f 86 c8 00 00 00 89 05 93 56 3d 0f e9 bd 00 00 00 48 b8 00 00 00 00 00 fc ff df 4c 89 f2 48 c1 ea 03 <80> 3c 02 00 0f 85 4e 31 00 00 49 81 3e 60 65 f6 8f 0f 84 4c f3 ff
RSP: 0018:ffffc900008d74a8 EFLAGS: 00010002
RAX: dffffc0000000000 RBX: 1ffff9200011aec5 RCX: 0000000000000000
RDX: 000000000000003d RSI: 0000000000000000 RDI: 0000000000000001
RBP: 0000000000000000 R08: 0000000000000001 R09: 0000000000000000
R10: fffffbfff1ce6862 R11: 0000000000000000 R12: 0000000000000000
R13: ffff88801562e100 R14: 00000000000001e8 R15: 0000000000000000
FS: 0000000000000000(0000) GS:ffff88802c700000(0000) knlGS:0000000000000000
CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 00007fc081fa8000 CR3: 000000006a5b7000 CR4: 0000000000150ee0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
Call Trace:
<TASK>
lock_acquire kernel/locking/lockdep.c:5668 [inline]
lock_acquire+0x1e3/0x630 kernel/locking/lockdep.c:5633
__raw_spin_lock include/linux/spinlock_api_smp.h:133 [inline]
_raw_spin_lock+0x2e/0x40 kernel/locking/spinlock.c:154
spin_lock include/linux/spinlock.h:350 [inline]
detach_extent_buffer_page+0x6c7/0xb40 fs/btrfs/extent_io.c:4051
btrfs_release_extent_buffer_pages+0x12b/0x400 fs/btrfs/extent_io.c:4120
release_extent_buffer+0x242/0x2b0 fs/btrfs/extent_io.c:4618
try_release_extent_buffer+0x307/0x8d0 fs/btrfs/extent_io.c:5717
btree_release_folio+0xc2/0x100 fs/btrfs/disk-io.c:909
filemap_release_folio+0x13f/0x1b0 mm/filemap.c:3967
btree_migrate_folio+0xa2/0x100 fs/btrfs/disk-io.c:874
move_to_new_folio+0x17a/0x6e0 mm/migrate.c:958
__unmap_and_move mm/migrate.c:1122 [inline]
unmap_and_move mm/migrate.c:1194 [inline]
migrate_pages+0x1de8/0x3e10 mm/migrate.c:1477
compact_zone+0x1c74/0x39f0 mm/compaction.c:2413
kcompactd_do_work+0x2f7/0x7c0 mm/compaction.c:2851
kcompactd+0x8c3/0xdf0 mm/compaction.c:2953
kthread+0x2e8/0x3a0 kernel/kthread.c:376
ret_from_fork+0x1f/0x30 arch/x86/entry/entry_64.S:306
</TASK>
Modules linked in:
---[ end trace 0000000000000000 ]---
RIP: 0010:__lock_acquire+0xd83/0x56d0 kernel/locking/lockdep.c:4925
Code: 3d 0f 41 bf 01 00 00 00 0f 86 c8 00 00 00 89 05 93 56 3d 0f e9 bd 00 00 00 48 b8 00 00 00 00 00 fc ff df 4c 89 f2 48 c1 ea 03 <80> 3c 02 00 0f 85 4e 31 00 00 49 81 3e 60 65 f6 8f 0f 84 4c f3 ff
RSP: 0018:ffffc900008d74a8 EFLAGS: 00010002
RAX: dffffc0000000000 RBX: 1ffff9200011aec5 RCX: 0000000000000000
RDX: 000000000000003d RSI: 0000000000000000 RDI: 0000000000000001
RBP: 0000000000000000 R08: 0000000000000001 R09: 0000000000000000
R10: fffffbfff1ce6862 R11: 0000000000000000 R12: 0000000000000000
R13: ffff88801562e100 R14: 00000000000001e8 R15: 0000000000000000
FS: 0000000000000000(0000) GS:ffff88802c700000(0000) knlGS:0000000000000000
CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 00007fc081fa8000 CR3: 000000006a5b7000 CR4: 0000000000150ee0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
----------------
Code disassembly (best guess), 1 bytes skipped:
0: 0f 41 bf 01 00 00 00 cmovno 0x1(%rdi),%edi
7: 0f 86 c8 00 00 00 jbe 0xd5
d: 89 05 93 56 3d 0f mov %eax,0xf3d5693(%rip) # 0xf3d56a6
13: e9 bd 00 00 00 jmpq 0xd5
18: 48 b8 00 00 00 00 00 movabs $0xdffffc0000000000,%rax
1f: fc ff df
22: 4c 89 f2 mov %r14,%rdx
25: 48 c1 ea 03 shr $0x3,%rdx
* 29: 80 3c 02 00 cmpb $0x0,(%rdx,%rax,1) <-- trapping instruction
2d: 0f 85 4e 31 00 00 jne 0x3181
33: 49 81 3e 60 65 f6 8f cmpq $0xffffffff8ff66560,(%r14)
3a: 0f .byte 0xf
3b: 84 4c f3 ff test %cl,-0x1(%rbx,%rsi,8)


---
This report is generated by a bot. It may contain errors.
See https://goo.gl/tpsmEJ for more information about syzbot.
syzbot engineers can be reached at syzkaller@xxxxxxxxxxxxxxxx.

syzbot will keep track of this issue. See:
https://goo.gl/tpsmEJ#status for how to communicate with syzbot.