syzbot
KASAN: vmalloc-out-of-bounds Read in ZSTD_decompressSequencesLong_bmi2
Status:
premoderation: reported on 2026/07/27 14:27
Reported-by: syzbot+58e489f4b45a02297853@syzkaller.appspotmail.com
First crash: 13d, last: 10d
Sample crash report:
zram: Can't change algorithm for initialized device
zram: Cannot change disksize for initialized device
==================================================================
BUG: KASAN: vmalloc-out-of-bounds in ZSTD_decompressSequencesLong_body lib/zstd/decompress/zstd_decompress_block.c:-1 [inline]
BUG: KASAN: vmalloc-out-of-bounds in ZSTD_decompressSequencesLong_bmi2+0x5262/0x7980 lib/zstd/decompress/zstd_decompress_block.c:1879
Read of size 64 at addr ffffc90000de5001 by task syz.1.37/389
CPU: 1 UID: 0 PID: 389 Comm: syz.1.37 Not tainted syzkaller #0 0b31bef96cff8e44f9e14c4f768eb06c85e3b290
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 07/24/2026
Call Trace:
<TASK>
__dump_stack+0x21/0x30 lib/dump_stack.c:94
dump_stack_lvl+0x140/0x1c0 lib/dump_stack.c:120
print_address_description+0x71/0x210 mm/kasan/report.c:377
print_report+0x4a/0x70 mm/kasan/report.c:481
kasan_report+0x162/0x1a0 mm/kasan/report.c:594
check_region_inline mm/kasan/generic.c:-1 [inline]
kasan_check_range+0x25a/0x2b0 mm/kasan/generic.c:189
__asan_memmove+0x31/0x80 mm/kasan/shadow.c:94
ZSTD_decompressSequencesLong_body lib/zstd/decompress/zstd_decompress_block.c:-1 [inline]
ZSTD_decompressSequencesLong_bmi2+0x5262/0x7980 lib/zstd/decompress/zstd_decompress_block.c:1879
ZSTD_decompressSequencesLong lib/zstd/decompress/zstd_decompress_block.c:1940 [inline]
ZSTD_decompressBlock_internal+0x28f/0x7a40 lib/zstd/decompress/zstd_decompress_block.c:2038
ZSTD_decompressFrame lib/zstd/decompress/zstd_decompress.c:891 [inline]
ZSTD_decompressMultiFrame+0xee0/0x18a0 lib/zstd/decompress/zstd_decompress.c:981
ZSTD_decompress_usingDDict+0x46/0x70 lib/zstd/decompress/zstd_decompress.c:1493
zstd_decompress_using_ddict+0x42/0x60 lib/zstd/zstd_decompress_module.c:93
zstd_decompress+0x15d/0x240 drivers/block/zram/backend_zstd.c:210
zcomp_decompress+0x12e/0x190 drivers/block/zram/zcomp.c:150
read_from_zspool+0x223/0x2b0 drivers/block/zram/zram_drv.c:2481
zram_read_page drivers/block/zram/zram_drv.c:2498 [inline]
zram_bvec_read drivers/block/zram/zram_drv.c:2543 [inline]
zram_bio_read drivers/block/zram/zram_drv.c:3137 [inline]
zram_submit_bio+0x131c/0x1e50 drivers/block/zram/zram_drv.c:3194
__submit_bio+0x519/0x9b0 block/blk-core.c:644
__submit_bio_noacct block/blk-core.c:690 [inline]
submit_bio_noacct_nocheck+0x5b5/0xab0 block/blk-core.c:753
submit_bio_noacct+0xc0e/0x1620 block/blk-core.c:874
submit_bio+0x424/0x5b0 block/blk-core.c:949
submit_bh_wbc+0x501/0x570 fs/buffer.c:2844
submit_bh fs/buffer.c:2849 [inline]
__bh_read fs/buffer.c:3122 [inline]
bh_read_nowait include/linux/buffer_head.h:450 [inline]
__block_write_begin_int+0x1305/0x1710 fs/buffer.c:2175
iomap_write_begin+0x8ed/0x1870 fs/iomap/buffered-io.c:852
iomap_write_iter fs/iomap/buffered-io.c:980 [inline]
iomap_file_buffered_write+0x3ca/0xc60 fs/iomap/buffered-io.c:1064
blkdev_buffered_write block/fops.c:665 [inline]
blkdev_write_iter+0x555/0x750 block/fops.c:730
new_sync_write fs/read_write.c:591 [inline]
vfs_write+0x762/0xfd0 fs/read_write.c:684
ksys_write+0x145/0x260 fs/read_write.c:737
__do_sys_write fs/read_write.c:749 [inline]
__se_sys_write fs/read_write.c:746 [inline]
__x64_sys_write+0x7f/0x90 fs/read_write.c:746
x64_sys_call+0x271c/0x2ee0 arch/x86/include/generated/asm/syscalls_64.h:2
do_syscall_x64 arch/x86/entry/common.c:47 [inline]
do_syscall_64+0x57/0xf0 arch/x86/entry/common.c:78
entry_SYSCALL_64_after_hwframe+0x76/0x7e
RIP: 0033:0x7f5fe2f9df99
Code: ff c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 e8 ff ff ff f7 d8 64 89 01 48
RSP: 002b:00007f5fe3d80028 EFLAGS: 00000246 ORIG_RAX: 0000000000000001
RAX: ffffffffffffffda RBX: 00007f5fe3225fa0 RCX: 00007f5fe2f9df99
RDX: 0000000000000040 RSI: 0000200000000500 RDI: 0000000000000004
RBP: 00007f5fe3034ec4 R08: 0000000000000000 R09: 0000000000000000
R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000
R13: 00007f5fe3226038 R14: 00007f5fe3225fa0 R15: 00007ffcf0b1a178
</TASK>
The buggy address belongs to a vmalloc virtual mapping
Memory state around the buggy address:
ffffc90000de4f00: f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8
ffffc90000de4f80: f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8
>ffffc90000de5000: f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8
^
ffffc90000de5080: f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8
ffffc90000de5100: f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8
==================================================================
BUG: unable to handle page fault for address: ffffc90000de50f9
#PF: supervisor read access in kernel mode
#PF: error_code(0x0000) - not-present page
PGD 100000067 P4D 100000067 PUD 101657067 PMD 10b2cc067 PTE 0
Oops: Oops: 0000 [#1] PREEMPT SMP KASAN PTI
CPU: 1 UID: 0 PID: 389 Comm: syz.1.37 Tainted: G B syzkaller #0 0b31bef96cff8e44f9e14c4f768eb06c85e3b290
Tainted: [B]=BAD_PAGE
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 07/24/2026
RIP: 0010:MEM_read32 lib/zstd/common/mem.h:118 [inline]
RIP: 0010:ZSTD_readMINMATCH lib/zstd/compress/zstd_opt.c:-1 [inline]
RIP: 0010:ZSTD_insertBtAndGetAllMatches lib/zstd/compress/zstd_opt.c:639 [inline]
RIP: 0010:ZSTD_btGetAllMatches_internal lib/zstd/compress/zstd_opt.c:812 [inline]
RIP: 0010:ZSTD_btGetAllMatches_dictMatchState_4+0xb5d/0x4550 lib/zstd/compress/zstd_opt.c:841
Code: e8 03 0f b6 04 08 84 c0 0f 85 e7 0d 00 00 48 89 5c 24 30 49 8d 7f 03 48 89 f8 48 c1 e8 03 0f b6 04 08 84 c0 0f 85 ff 0d 00 00 <45> 8b 37 44 89 ef 44 89 f6 e8 25 21 ac fe 45 39 f5 0f 85 3e 02 00
RSP: 0018:ffffc9000b7fe160 EFLAGS: 00010286
RAX: 0000000000000000 RBX: 00000000000000fb RCX: ffffffff82db6063
RDX: 0000000000000000 RSI: 0000000000000004 RDI: ffffc90000de50fc
RBP: ffffc9000b7fe3a0 R08: ffff888121a23900 R09: 0000000000000004
R10: 0000000000000008 R11: 0000000000000002 R12: 0000000000000101
R13: 0000000044332211 R14: 0000000000000007 R15: ffffc90000de50f9
FS: 00007f5fe3d806c0(0000) GS:ffff8881f6f00000(0000) knlGS:0000000000000000
CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: ffffc90000de50f9 CR3: 000000011be2e000 CR4: 00000000003526b0
Call Trace:
<TASK>
ZSTD_compressBlock_opt_generic lib/zstd/compress/zstd_opt.c:1083 [inline]
ZSTD_compressBlock_opt0+0x65e/0x5220 lib/zstd/compress/zstd_opt.c:1328
ZSTD_compressBlock_btopt_dictMatchState+0x3f/0x50 lib/zstd/compress/zstd_opt.c:1420
ZSTD_buildSeqStore+0x960/0xcf0 lib/zstd/compress/zstd_compress.c:2796
ZSTD_compressBlock_internal+0x3c/0x520 lib/zstd/compress/zstd_compress.c:3688
ZSTD_compress_frameChunk lib/zstd/compress/zstd_compress.c:3887 [inline]
ZSTD_compressContinue_internal+0x103d/0x3e20 lib/zstd/compress/zstd_compress.c:4062
ZSTD_compressEnd+0x45/0x890 lib/zstd/compress/zstd_compress.c:4545
ZSTD_compress_usingCDict_internal lib/zstd/compress/zstd_compress.c:5005 [inline]
ZSTD_compress_usingCDict+0x71/0xa0 lib/zstd/compress/zstd_compress.c:5030
zstd_compress_using_cdict+0x42/0x60 lib/zstd/zstd_compress_module.c:148
zstd_compress+0x1ab/0x240 drivers/block/zram/backend_zstd.c:189
zcomp_compress+0x156/0x210 drivers/block/zram/zcomp.c:134
zram_write_page drivers/block/zram/zram_drv.c:2570 [inline]
zram_bvec_write drivers/block/zram/zram_drv.c:2699 [inline]
zram_bio_write drivers/block/zram/zram_drv.c:3168 [inline]
zram_submit_bio+0x65c/0x1e50 drivers/block/zram/zram_drv.c:3197
__submit_bio+0x519/0x9b0 block/blk-core.c:644
__submit_bio_noacct block/blk-core.c:690 [inline]
submit_bio_noacct_nocheck+0x5b5/0xab0 block/blk-core.c:753
submit_bio_noacct+0xc0e/0x1620 block/blk-core.c:874
submit_bio+0x424/0x5b0 block/blk-core.c:949
submit_bh_wbc+0x501/0x570 fs/buffer.c:2844
__block_write_full_folio+0x8d3/0xe80 fs/buffer.c:1934
block_write_full_folio+0x300/0x370 include/linux/highmem.h:-1
write_cache_pages+0x76/0x110 mm/page-writeback.c:2646
blkdev_writepages+0xc5/0x130 block/fops.c:433
do_writepages+0x3d4/0x7f0 mm/page-writeback.c:2689
filemap_fdatawrite_wbc+0x12c/0x190 mm/filemap.c:425
__filemap_fdatawrite_range mm/filemap.c:458 [inline]
filemap_write_and_wait_range+0x191/0x2a0 mm/filemap.c:730
filemap_write_and_wait include/linux/pagemap.h:68 [inline]
sync_blockdev block/bdev.c:241 [inline]
bdev_release+0x199/0x700 block/bdev.c:1107
blkdev_release+0x19/0x30 block/fops.c:635
__fput+0x208/0xa30 fs/file_table.c:447
____fput+0x20/0x30 fs/file_table.c:475
task_work_run+0x1e8/0x260 kernel/task_work.c:246
get_signal+0x12b3/0x1490 kernel/signal.c:2706
arch_do_signal_or_restart+0xbc/0x700 arch/x86/kernel/signal.c:337
exit_to_user_mode_loop kernel/entry/common.c:111 [inline]
exit_to_user_mode_prepare include/linux/entry-common.h:328 [inline]
__syscall_exit_to_user_mode_work kernel/entry/common.c:207 [inline]
syscall_exit_to_user_mode+0x57/0xb0 kernel/entry/common.c:218
do_syscall_64+0x63/0xf0 arch/x86/entry/common.c:84
entry_SYSCALL_64_after_hwframe+0x76/0x7e
RIP: 0033:0x7f5fe2f9df99
Code: ff c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 e8 ff ff ff f7 d8 64 89 01 48
RSP: 002b:00007f5fe3d80028 EFLAGS: 00000246 ORIG_RAX: 0000000000000001
RAX: 0000000000000040 RBX: 00007f5fe3225fa0 RCX: 00007f5fe2f9df99
RDX: 0000000000000040 RSI: 0000200000000500 RDI: 0000000000000004
RBP: 00007f5fe3034ec4 R08: 0000000000000000 R09: 0000000000000000
R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000
R13: 00007f5fe3226038 R14: 00007f5fe3225fa0 R15: 00007ffcf0b1a178
</TASK>
Modules linked in:
CR2: ffffc90000de50f9
---[ end trace 0000000000000000 ]---
RIP: 0010:MEM_read32 lib/zstd/common/mem.h:118 [inline]
RIP: 0010:ZSTD_readMINMATCH lib/zstd/compress/zstd_opt.c:-1 [inline]
RIP: 0010:ZSTD_insertBtAndGetAllMatches lib/zstd/compress/zstd_opt.c:639 [inline]
RIP: 0010:ZSTD_btGetAllMatches_internal lib/zstd/compress/zstd_opt.c:812 [inline]
RIP: 0010:ZSTD_btGetAllMatches_dictMatchState_4+0xb5d/0x4550 lib/zstd/compress/zstd_opt.c:841
Code: e8 03 0f b6 04 08 84 c0 0f 85 e7 0d 00 00 48 89 5c 24 30 49 8d 7f 03 48 89 f8 48 c1 e8 03 0f b6 04 08 84 c0 0f 85 ff 0d 00 00 <45> 8b 37 44 89 ef 44 89 f6 e8 25 21 ac fe 45 39 f5 0f 85 3e 02 00
RSP: 0018:ffffc9000b7fe160 EFLAGS: 00010286
RAX: 0000000000000000 RBX: 00000000000000fb RCX: ffffffff82db6063
RDX: 0000000000000000 RSI: 0000000000000004 RDI: ffffc90000de50fc
RBP: ffffc9000b7fe3a0 R08: ffff888121a23900 R09: 0000000000000004
R10: 0000000000000008 R11: 0000000000000002 R12: 0000000000000101
R13: 0000000044332211 R14: 0000000000000007 R15: ffffc90000de50f9
FS: 00007f5fe3d806c0(0000) GS:ffff8881f6f00000(0000) knlGS:0000000000000000
CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: ffffc90000de50f9 CR3: 000000011be2e000 CR4: 00000000003526b0
----------------
Code disassembly (best guess):
0: e8 03 0f b6 04 call 0x4b60f08
5: 08 84 c0 0f 85 e7 0d or %al,0xde7850f(%rax,%rax,8)
c: 00 00 add %al,(%rax)
e: 48 89 5c 24 30 mov %rbx,0x30(%rsp)
13: 49 8d 7f 03 lea 0x3(%r15),%rdi
17: 48 89 f8 mov %rdi,%rax
1a: 48 c1 e8 03 shr $0x3,%rax
1e: 0f b6 04 08 movzbl (%rax,%rcx,1),%eax
22: 84 c0 test %al,%al
24: 0f 85 ff 0d 00 00 jne 0xe29
* 2a: 45 8b 37 mov (%r15),%r14d <-- trapping instruction
2d: 44 89 ef mov %r13d,%edi
30: 44 89 f6 mov %r14d,%esi
33: e8 25 21 ac fe call 0xfeac215d
38: 45 39 f5 cmp %r14d,%r13d
3b: 0f .byte 0xf
3c: 85 3e test %edi,(%rsi)
3e: 02 00 add (%rax),%al
* Struck through repros no longer work on HEAD.