KASAN: vmalloc-out-of-bounds Read in ZSTD_btGetAllMatches_dictMatchState_4

Status: premoderation: reported on 2026/07/27 14:28
Reported-by: syzbot+032d545a3b176cda3ef1@syzkaller.appspotmail.com
First crash: 14d, last: 11d

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 MEM_read32 lib/zstd/common/mem.h:118 [inline]
BUG: KASAN: vmalloc-out-of-bounds in ZSTD_readMINMATCH lib/zstd/compress/zstd_opt.c:-1 [inline]
BUG: KASAN: vmalloc-out-of-bounds in ZSTD_insertBtAndGetAllMatches lib/zstd/compress/zstd_opt.c:639 [inline]
BUG: KASAN: vmalloc-out-of-bounds in ZSTD_btGetAllMatches_internal lib/zstd/compress/zstd_opt.c:812 [inline]
BUG: KASAN: vmalloc-out-of-bounds in ZSTD_btGetAllMatches_dictMatchState_4+0x194d/0x4550 lib/zstd/compress/zstd_opt.c:841
Read of size 4 at addr ffffc900002d50f9 by task syz.2.6/330

CPU: 0 UID: 0 PID: 330 Comm: syz.2.6 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
 __asan_report_load_n_noabort+0x13/0x20 mm/kasan/report_generic.c:391
 MEM_read32 lib/zstd/common/mem.h:118 [inline]
 ZSTD_readMINMATCH lib/zstd/compress/zstd_opt.c:-1 [inline]
 ZSTD_insertBtAndGetAllMatches lib/zstd/compress/zstd_opt.c:639 [inline]
 ZSTD_btGetAllMatches_internal lib/zstd/compress/zstd_opt.c:812 [inline]
 ZSTD_btGetAllMatches_dictMatchState_4+0x194d/0x4550 lib/zstd/compress/zstd_opt.c:841
 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_sync+0x4a/0x70 fs/file_table.c:532
 __do_sys_close fs/open.c:1592 [inline]
 __se_sys_close+0x172/0x1f0 fs/open.c:1577
 __x64_sys_close+0x3c/0x60 fs/open.c:1577
 x64_sys_call+0x2560/0x2ee0 arch/x86/include/generated/asm/syscalls_64.h:4
 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:0x7f11eb99df99
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:00007f11ec836028 EFLAGS: 00000246 ORIG_RAX: 0000000000000003
RAX: ffffffffffffffda RBX: 00007f11ebc25fa0 RCX: 00007f11eb99df99
RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000004
RBP: 00007f11eba34ec4 R08: 0000000000000000 R09: 0000000000000000
R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000
R13: 00007f11ebc26038 R14: 00007f11ebc25fa0 R15: 00007fffac000108
 </TASK>

The buggy address belongs to a vmalloc virtual mapping
Memory state around the buggy address:
 ffffc900002d4f80: f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8
 ffffc900002d5000: f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8
>ffffc900002d5080: f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8
                                                                ^
 ffffc900002d5100: f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8
 ffffc900002d5180: f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8
==================================================================
BUG: unable to handle page fault for address: ffffc900002d50f9
#PF: supervisor read access in kernel mode
#PF: error_code(0x0000) - not-present page
PGD 100000067 P4D 100000067 PUD 101657067 PMD 104246067 PTE 0
Oops: Oops: 0000 [#1] PREEMPT SMP KASAN PTI
CPU: 0 UID: 0 PID: 330 Comm: syz.2.6 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:ffffc9000b80e420 EFLAGS: 00010286
RAX: 0000000000000000 RBX: 00000000000000fb RCX: ffffffff82db6063
RDX: 0000000000000000 RSI: 0000000000000004 RDI: ffffc900002d50fc
RBP: ffffc9000b80e660 R08: ffffffff88bb3947 R09: 1ffffffff1176728
R10: dffffc0000000000 R11: fffffbfff1176729 R12: 0000000000000101
R13: 0000000044332211 R14: 0000000000000007 R15: ffffc900002d50f9
FS:  00007f11ec8366c0(0000) GS:ffff8881f6e00000(0000) knlGS:0000000000000000
CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: ffffc900002d50f9 CR3: 000000010efe4000 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_sync+0x4a/0x70 fs/file_table.c:532
 __do_sys_close fs/open.c:1592 [inline]
 __se_sys_close+0x172/0x1f0 fs/open.c:1577
 __x64_sys_close+0x3c/0x60 fs/open.c:1577
 x64_sys_call+0x2560/0x2ee0 arch/x86/include/generated/asm/syscalls_64.h:4
 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:0x7f11eb99df99
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:00007f11ec836028 EFLAGS: 00000246 ORIG_RAX: 0000000000000003
RAX: ffffffffffffffda RBX: 00007f11ebc25fa0 RCX: 00007f11eb99df99
RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000004
RBP: 00007f11eba34ec4 R08: 0000000000000000 R09: 0000000000000000
R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000
R13: 00007f11ebc26038 R14: 00007f11ebc25fa0 R15: 00007fffac000108
 </TASK>
Modules linked in:
CR2: ffffc900002d50f9
---[ 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:ffffc9000b80e420 EFLAGS: 00010286
RAX: 0000000000000000 RBX: 00000000000000fb RCX: ffffffff82db6063
RDX: 0000000000000000 RSI: 0000000000000004 RDI: ffffc900002d50fc
RBP: ffffc9000b80e660 R08: ffffffff88bb3947 R09: 1ffffffff1176728
R10: dffffc0000000000 R11: fffffbfff1176729 R12: 0000000000000101
R13: 0000000044332211 R14: 0000000000000007 R15: ffffc900002d50f9
FS:  00007f11ec8366c0(0000) GS:ffff8881f6e00000(0000) knlGS:0000000000000000
CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: ffffc900002d50f9 CR3: 000000010efe4000 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 (6):
Time Kernel Commit Syzkaller Config Log Report Syz repro C repro VM info Assets (help?) Manager Title
2026/07/30 11:36 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_btGetAllMatches_dictMatchState_4
2026/07/27 14:55 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_btGetAllMatches_dictMatchState_4
2026/07/27 14:30 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_btGetAllMatches_dictMatchState_4
2026/07/27 14:28 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_btGetAllMatches_dictMatchState_4
2026/07/27 14:28 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_btGetAllMatches_dictMatchState_4
2026/07/27 14:27 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_btGetAllMatches_dictMatchState_4
* Struck through repros no longer work on HEAD.