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

Crashes (7):
Time Kernel Commit Syzkaller Config Log Report Syz repro C repro VM info Assets (help?) Manager Title
2026/07/30 11:34 android16-6.12 f1c9c21d1c2f 2377cd3d .config console log report info [disk image] [vmlinux] [kernel image] ci2-android-6-12-rust KASAN: vmalloc-out-of-bounds Read in ZSTD_decompressSequencesLong_bmi2
2026/07/30 11:32 android16-6.12 f1c9c21d1c2f 2377cd3d .config console log report info [disk image] [vmlinux] [kernel image] ci2-android-6-12-rust KASAN: vmalloc-out-of-bounds Read in ZSTD_decompressSequencesLong_bmi2
2026/07/30 11:30 android16-6.12 f1c9c21d1c2f 2377cd3d .config console log report info [disk image] [vmlinux] [kernel image] ci2-android-6-12-rust KASAN: vmalloc-out-of-bounds Read in ZSTD_decompressSequencesLong_bmi2
2026/07/27 14:49 android16-6.12 a12ab5a23a35 aae9036b .config console log report info [disk image] [vmlinux] [kernel image] ci2-android-6-12-rust KASAN: vmalloc-out-of-bounds Read in ZSTD_decompressSequencesLong_bmi2
2026/07/27 14:32 android16-6.12 a12ab5a23a35 aae9036b .config console log report info [disk image] [vmlinux] [kernel image] ci2-android-6-12-rust KASAN: vmalloc-out-of-bounds Read in ZSTD_decompressSequencesLong_bmi2
2026/07/27 14:29 android16-6.12 a12ab5a23a35 aae9036b .config console log report info [disk image] [vmlinux] [kernel image] ci2-android-6-12-rust KASAN: vmalloc-out-of-bounds Read in ZSTD_decompressSequencesLong_bmi2
2026/07/27 14:26 android16-6.12 a12ab5a23a35 aae9036b .config console log report info [disk image] [vmlinux] [kernel image] ci2-android-6-12-rust KASAN: vmalloc-out-of-bounds Read in ZSTD_decompressSequencesLong_bmi2
* Struck through repros no longer work on HEAD.