[Android 6.1] KASAN: slab-out-of-bounds Write in stack_map_get_build_id_offset

5 views
Skip to first unread message

syzbot

unread,
Sep 9, 2026, 7:40:25 PMSep 9
to syzkaller-a...@googlegroups.com
Hello,

syzbot found the following issue on:

HEAD commit: 6f22c036600e ANDROID: certs: extract-cert: Guard key_pass ..
git tree: android14-6.1
console+strace: https://syzkaller.appspot.com/x/log.txt?x=14bdf8d1580000
kernel config: https://syzkaller.appspot.com/x/.config?x=6af0777879025b2
dashboard link: https://syzkaller.appspot.com/bug?extid=09ff847bfd1c649d84b2
compiler: Debian clang version 22.1.8 (++20260613092233+e80beda6e255-1~exp1~20260613092250.77), Debian LLD 22.1.8
syz repro: https://syzkaller.appspot.com/x/repro.syz?x=1718c601580000
C reproducer: https://syzkaller.appspot.com/x/repro.c?x=11fb7071580000

Downloadable assets:
disk image: https://storage.googleapis.com/syzbot-assets/18c7bee396ed/disk-6f22c036.raw.xz
vmlinux: https://storage.googleapis.com/syzbot-assets/4d883c59c1b4/vmlinux-6f22c036.xz
kernel image: https://storage.googleapis.com/syzbot-assets/f6df148bb225/bzImage-6f22c036.xz

IMPORTANT: if you fix the issue, please add the following tag to the commit:
Reported-by: syzbot+09ff84...@syzkaller.appspotmail.com

==================================================================
BUG: KASAN: slab-out-of-bounds in stack_map_get_build_id_offset+0x988/0x9b0 kernel/bpf/stackmap.c:147
Write of size 4 at addr ffff888121059b30 by task syz-executor141/305

CPU: 1 PID: 305 Comm: syz-executor141 Not tainted syzkaller #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 07/24/2026
Call Trace:
<TASK>
__dump_stack+0x21/0x24 lib/dump_stack.c:88
dump_stack_lvl+0x110/0x170 lib/dump_stack.c:106
print_address_description+0x71/0x200 mm/kasan/report.c:316
print_report+0x4a/0x60 mm/kasan/report.c:420
kasan_report+0x122/0x150 mm/kasan/report.c:524
__asan_report_store4_noabort+0x17/0x20 mm/kasan/report_generic.c:355
stack_map_get_build_id_offset+0x988/0x9b0 kernel/bpf/stackmap.c:147
__bpf_get_stackid+0x5ac/0x960 kernel/bpf/stackmap.c:250
____bpf_get_stackid_pe kernel/bpf/stackmap.c:365 [inline]
bpf_get_stackid_pe+0x2ee/0x400 kernel/bpf/stackmap.c:334
bpf_prog_2414a5d5030ea31b+0x21/0x25
bpf_dispatcher_nop_func include/linux/bpf.h:987 [inline]
__bpf_prog_run include/linux/filter.h:607 [inline]
bpf_prog_run include/linux/filter.h:614 [inline]
bpf_overflow_handler+0x3c7/0x5e0 kernel/events/core.c:10273
__perf_event_overflow+0x458/0x640 kernel/events/core.c:9448
perf_swevent_overflow kernel/events/core.c:9531 [inline]
perf_swevent_event+0x243/0x440 kernel/events/core.c:9582
do_perf_sw_event kernel/events/core.c:9695 [inline]
___perf_sw_event+0x3bf/0x500 kernel/events/core.c:9726
__perf_sw_event+0x134/0x270 kernel/events/core.c:9738
perf_sw_event include/linux/perf_event.h:1250 [inline]
do_user_addr_fault+0xfe9/0x1030 arch/x86/mm/fault.c:1285
handle_page_fault arch/x86/mm/fault.c:1464 [inline]
exc_page_fault+0x51/0xb0 arch/x86/mm/fault.c:1517
asm_exc_page_fault+0x27/0x30 arch/x86/include/asm/idtentry.h:608
RIP: 0010:copy_user_short_string+0xd/0x40 arch/x86/lib/copy_user_64.S:233
Code: 74 0a 89 d1 f3 a4 89 c8 0f 01 ca c3 89 d0 0f 01 ca c3 01 ca eb e7 90 90 90 90 90 90 90 89 d1 83 e2 07 c1 e9 03 74 12 4c 8b 06 <4c> 89 07 48 8d 76 08 48 8d 7f 08 ff c9 75 ee 21 d2 74 10 89 d1 8a
RSP: 0018:ffffc90000e17298 EFLAGS: 00050202
RAX: ffffffff82692d01 RBX: 000000000000000b RCX: 0000000000000001
RDX: 0000000000000003 RSI: ffff8881229a066c RDI: 000020000000cf3d
RBP: ffffc90000e172c0 R08: 40203023636e7566 R09: 1ffff110245340ce
R10: dffffc0000000000 R11: ffffed10245340cf R12: 00007fffffffeff5
R13: 000000000000000b R14: 000020000000cf3d R15: ffff8881229a066c
copy_to_user include/linux/uaccess.h:169 [inline]
bpf_verifier_vlog+0x179/0x390 kernel/bpf/log.c:34
verbose+0x1f0/0x2b0 kernel/bpf/verifier.c:303
add_subprog_and_kfunc kernel/bpf/verifier.c:2165 [inline]
bpf_check+0x2f1b/0x10e90 kernel/bpf/verifier.c:15549
bpf_prog_load+0x10f4/0x1670 kernel/bpf/syscall.c:2624
__sys_bpf+0x57b/0x850 kernel/bpf/syscall.c:5006
__do_sys_bpf kernel/bpf/syscall.c:5110 [inline]
__se_sys_bpf kernel/bpf/syscall.c:5108 [inline]
__x64_sys_bpf+0x7c/0x90 kernel/bpf/syscall.c:5108
x64_sys_call+0x488/0x9a0 arch/x86/include/generated/asm/syscalls_64.h:322
do_syscall_x64 arch/x86/entry/common.c:46 [inline]
do_syscall_64+0x4c/0xa0 arch/x86/entry/common.c:76
entry_SYSCALL_64_after_hwframe+0x68/0xd2
RIP: 0033:0x7fb5bc055d39
Code: c0 79 93 eb d5 48 8d 7c 1d 00 eb 99 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 d8 ff ff ff f7 d8 64 89 01 48
RSP: 002b:00007ffdc3712f68 EFLAGS: 00000246 ORIG_RAX: 0000000000000141
RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007fb5bc055d39
RDX: 0000000000000048 RSI: 000020000000e000 RDI: 0000000000000005
RBP: 0000000000000000 R08: 0000000000000000 R09: 00007fb5bc0436e0
R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000
R13: 0000000000000002 R14: 00007fb5bc0e8ba0 R15: 0000000000000002
</TASK>

Allocated by task 305:
kasan_save_stack mm/kasan/common.c:46 [inline]
kasan_set_track+0x4b/0x70 mm/kasan/common.c:53
kasan_save_alloc_info+0x1f/0x30 mm/kasan/generic.c:505
____kasan_kmalloc mm/kasan/common.c:380 [inline]
__kasan_kmalloc+0x95/0xb0 mm/kasan/common.c:389
kasan_kmalloc include/linux/kasan.h:212 [inline]
__do_kmalloc_node mm/slab_common.c:938 [inline]
__kmalloc_node+0xb2/0x1e0 mm/slab_common.c:945
kmalloc_node include/linux/slab.h:589 [inline]
__bpf_map_area_alloc kernel/bpf/syscall.c:328 [inline]
bpf_map_area_alloc+0x4b/0xe0 kernel/bpf/syscall.c:341
prealloc_elems_and_freelist+0x8a/0x1e0 kernel/bpf/stackmap.c:51
stack_map_alloc+0x398/0x520 kernel/bpf/stackmap.c:117
find_and_alloc_map kernel/bpf/syscall.c:133 [inline]
map_create+0x467/0xcf0 kernel/bpf/syscall.c:1126
__sys_bpf+0x34e/0x850 kernel/bpf/syscall.c:4988
__do_sys_bpf kernel/bpf/syscall.c:5110 [inline]
__se_sys_bpf kernel/bpf/syscall.c:5108 [inline]
__x64_sys_bpf+0x7c/0x90 kernel/bpf/syscall.c:5108
x64_sys_call+0x488/0x9a0 arch/x86/include/generated/asm/syscalls_64.h:322
do_syscall_x64 arch/x86/entry/common.c:46 [inline]
do_syscall_64+0x4c/0xa0 arch/x86/entry/common.c:76
entry_SYSCALL_64_after_hwframe+0x68/0xd2

The buggy address belongs to the object at ffff888121059800
which belongs to the cache kmalloc-1k of size 1024
The buggy address is located 816 bytes inside of
1024-byte region [ffff888121059800, ffff888121059c00)

The buggy address belongs to the physical page:
page:ffffea0004841600 refcount:1 mapcount:0 mapping:0000000000000000 index:0x0 pfn:0x121058
head:ffffea0004841600 order:3 compound_mapcount:0 compound_pincount:0
flags: 0x4000000000010200(slab|head|zone=1)
raw: 4000000000010200 0000000000000000 dead000000000122 ffff888100043080
raw: 0000000000000000 0000000080100010 00000001ffffffff 0000000000000000
page dumped because: kasan: bad access detected
page_owner tracks the page as allocated
page last allocated via order 3, migratetype Unmovable, gfp_mask 0xd20c0(__GFP_IO|__GFP_FS|__GFP_NOWARN|__GFP_NORETRY|__GFP_COMP|__GFP_NOMEMALLOC), pid 302, tgid 302 (sshd-session), ts 23757512020, free_ts 23756792953
set_page_owner include/linux/page_owner.h:33 [inline]
post_alloc_hook+0x1f5/0x210 mm/page_alloc.c:2673
prep_new_page+0x1c/0x110 mm/page_alloc.c:2680
get_page_from_freelist+0x2ca9/0x2d20 mm/page_alloc.c:4587
__alloc_pages+0x1fa/0x610 mm/page_alloc.c:5931
alloc_slab_page+0x6e/0xf0 include/linux/gfp.h:-1
allocate_slab mm/slub.c:1967 [inline]
new_slab+0x98/0x3e0 mm/slub.c:2020
___slab_alloc+0x70f/0xb70 mm/slub.c:3177
__slab_alloc+0x5e/0xa0 mm/slub.c:3263
slab_alloc_node mm/slub.c:3348 [inline]
__kmem_cache_alloc_node+0x204/0x2d0 mm/slub.c:3423
__do_kmalloc_node mm/slab_common.c:937 [inline]
__kmalloc_node_track_caller+0xa1/0x1e0 mm/slab_common.c:958
kmalloc_reserve net/core/skbuff.c:449 [inline]
__alloc_skb+0x226/0x4a0 net/core/skbuff.c:518
alloc_skb_fclone include/linux/skbuff.h:1372 [inline]
tcp_stream_alloc_skb+0x47/0x360 net/ipv4/tcp.c:871
tcp_sendmsg_locked+0xcb7/0x39f0 net/ipv4/tcp.c:1334
tcp_sendmsg+0x2f/0x50 net/ipv4/tcp.c:1492
inet_sendmsg+0xb6/0xd0 net/ipv4/af_inet.c:841
sock_sendmsg_nosec net/socket.c:716 [inline]
__sock_sendmsg net/socket.c:728 [inline]
sock_write_iter+0x2ea/0x3f0 net/socket.c:1134
page last free stack trace:
reset_page_owner include/linux/page_owner.h:26 [inline]
free_pages_prepare mm/page_alloc.c:1581 [inline]
free_pcp_prepare mm/page_alloc.c:1655 [inline]
free_unref_page_prepare+0x81b/0x820 mm/page_alloc.c:3622
free_unref_page+0x93/0x530 mm/page_alloc.c:3720
free_the_page mm/page_alloc.c:863 [inline]
free_compound_page+0x99/0xd0 mm/page_alloc.c:886
destroy_large_folio+0x68/0xa0 mm/page_alloc.c:923
__folio_put_large mm/swap.c:113 [inline]
__folio_put+0xd1/0xe0 mm/swap.c:121
folio_put include/linux/mm.h:1442 [inline]
put_page include/linux/mm.h:1494 [inline]
page_to_skb+0x4e1/0xb50 drivers/net/virtio_net.c:565
receive_mergeable drivers/net/virtio_net.c:1158 [inline]
receive_buf+0x469/0x4890 drivers/net/virtio_net.c:1297
virtnet_receive drivers/net/virtio_net.c:1592 [inline]
virtnet_poll+0x5c9/0x1150 drivers/net/virtio_net.c:1710
__napi_poll+0xcd/0x5d0 net/core/dev.c:6644
napi_poll net/core/dev.c:6711 [inline]
net_rx_action+0x4a3/0xa90 net/core/dev.c:6825
handle_softirqs+0x1d7/0x600 kernel/softirq.c:642
__do_softirq kernel/softirq.c:680 [inline]
invoke_softirq kernel/softirq.c:497 [inline]
__irq_exit_rcu+0x52/0xf0 kernel/softirq.c:729
irq_exit_rcu+0x9/0x10 kernel/softirq.c:741
common_interrupt+0xbe/0xe0 arch/x86/kernel/irq.c:242
asm_common_interrupt+0x27/0x40 arch/x86/include/asm/idtentry.h:682

Memory state around the buggy address:
ffff888121059a00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
ffff888121059a80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>ffff888121059b00: 00 00 00 00 0
----------------
Code disassembly (best guess):
0: 74 0a je 0xc
2: 89 d1 mov %edx,%ecx
4: f3 a4 rep movsb %ds:(%rsi),%es:(%rdi)
6: 89 c8 mov %ecx,%eax
8: 0f 01 ca clac
b: c3 ret
c: 89 d0 mov %edx,%eax
e: 0f 01 ca clac
11: c3 ret
12: 01 ca add %ecx,%edx
14: eb e7 jmp 0xfffffffd
16: 90 nop
17: 90 nop
18: 90 nop
19: 90 nop
1a: 90 nop
1b: 90 nop
1c: 90 nop
1d: 89 d1 mov %edx,%ecx
1f: 83 e2 07 and $0x7,%edx
22: c1 e9 03 shr $0x3,%ecx
25: 74 12 je 0x39
27: 4c 8b 06 mov (%rsi),%r8
* 2a: 4c 89 07 mov %r8,(%rdi) <-- trapping instruction
2d: 48 8d 76 08 lea 0x8(%rsi),%rsi
31: 48 8d 7f 08 lea 0x8(%rdi),%rdi
35: ff c9 dec %ecx
37: 75 ee jne 0x27
39: 21 d2 and %edx,%edx
3b: 74 10 je 0x4d
3d: 89 d1 mov %edx,%ecx
3f: 8a .byte 0x8a


---
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 syzk...@googlegroups.com.

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

If the report is already addressed, let syzbot know by replying with:
#syz fix: exact-commit-title

If you want syzbot to run the reproducer, reply with:
#syz test: git://repo/address.git branch-or-commit-hash
If you attach or paste a git patch, syzbot will apply it before testing.

If you want to overwrite report's subsystems, reply with:
#syz set subsystems: new-subsystem
(See the list of subsystem names on the web dashboard)

If the report is a duplicate of another one, reply with:
#syz dup: exact-subject-of-another-report

If you want to undo deduplication, reply with:
#syz undup
Reply all
Reply to author
Forward
0 new messages