==================================================================
BUG: KASAN: slab-out-of-bounds in mcp2221_raw_event+0xfc1/0x1180 drivers/hid/hid-mcp2221.c:830
Read of size 1 at addr ffff88801dbdbfff by task syz.6.1382/10968
CPU: 1 PID: 10968 Comm: syz.6.1382 Not tainted 6.6.94-syzkaller #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 05/07/2025
Call Trace:
dump_stack_lvl+0x16c/0x230 lib/dump_stack.c:106
print_address_description mm/kasan/report.c:364 [inline]
print_report+0xac/0x230 mm/kasan/report.c:475
kasan_report+0x117/0x150 mm/kasan/report.c:588
mcp2221_raw_event+0xfc1/0x1180 drivers/hid/hid-mcp2221.c:830
hid_input_report+0x400/0x520 drivers/hid/hid-core.c:2086
hid_irq_in+0x479/0x6d0 drivers/hid/usbhid/hid-core.c:284
__usb_hcd_giveback_urb+0x35f/0x520 drivers/usb/core/hcd.c:1650
dummy_timer+0x8a3/0x31b0 drivers/usb/gadget/udc/dummy_hcd.c:1993
__run_hrtimer kernel/time/hrtimer.c:1755 [inline]
__hrtimer_run_queues+0x51e/0xc40 kernel/time/hrtimer.c:1819
hrtimer_run_softirq+0x187/0x2b0 kernel/time/hrtimer.c:1836
handle_softirqs+0x280/0x820 kernel/softirq.c:578
__do_softirq kernel/softirq.c:612 [inline]
invoke_softirq kernel/softirq.c:452 [inline]
__irq_exit_rcu+0xc7/0x190 kernel/softirq.c:661
irq_exit_rcu+0x9/0x20 kernel/softirq.c:673
instr_sysvec_apic_timer_interrupt arch/x86/kernel/apic/apic.c:1088 [inline]
sysvec_apic_timer_interrupt+0xa4/0xc0 arch/x86/kernel/apic/apic.c:1088
asm_sysvec_apic_timer_interrupt+0x1a/0x20 arch/x86/include/asm/idtentry.h:687
RIP: 0010:finish_task_switch+0x26a/0x920 kernel/sched/core.c:5255
Code: 0f 84 37 01 00 00 48 85 db 0f 85 56 01 00 00 0f 1f 44 00 00 4c 8b 75 d0 4c 89 e7 e8 c0 8c 13 09 e8 fb b3 2f 00 fb 4c 8b 65 c0 <49> 8d bc 24 f8 15 00 00 48 89 f8 48 c1 e8 03 42 0f b6 04 28 84 c0
RSP: 0000:ffffc90012c0f518 EFLAGS: 00000286
RAX: 6f8ea0b5f3c5a100 RBX: 0000000000000000 RCX: 6f8ea0b5f3c5a100
RDX: dffffc0000000000 RSI: ffffffff8aaab2c0 RDI: ffffffff8afc6900
RBP: ffffc90012c0f570 R08: ffffffff8e49ab2f R09: 1ffffffff1c93565
R10: dffffc0000000000 R11: fffffbfff1c93566 R12: ffff8880292e0000
R13: dffffc0000000000 R14: ffff888023599e00 R15: ffff8880b8f3cf08
context_switch kernel/sched/core.c:5384 [inline]
__schedule+0x14ea/0x4580 kernel/sched/core.c:6700
preempt_schedule_common+0x82/0xc0 kernel/sched/core.c:6867
preempt_schedule+0xab/0xc0 kernel/sched/core.c:6891
preempt_schedule_thunk+0x1a/0x30 arch/x86/entry/thunk_64.S:45
__raw_spin_unlock_irqrestore include/linux/spinlock_api_smp.h:152 [inline]
_raw_spin_unlock_irqrestore+0xfa/0x110 kernel/locking/spinlock.c:194
spin_unlock_irqrestore include/linux/spinlock.h:406 [inline]
dummy_queue+0x56b/0x8d0 drivers/usb/gadget/udc/dummy_hcd.c:743
usb_ep_queue+0xea/0x350 drivers/usb/gadget/udc/core.c:300
raw_process_ep_io+0x5a5/0xc50 drivers/usb/gadget/legacy/raw_gadget.c:1067
raw_ioctl_ep_write drivers/usb/gadget/legacy/raw_gadget.c:1107 [inline]
raw_ioctl+0x23cc/0x3c20 drivers/usb/gadget/legacy/raw_gadget.c:1279
vfs_ioctl fs/ioctl.c:51 [inline]
__do_sys_ioctl fs/ioctl.c:871 [inline]
__se_sys_ioctl+0xfd/0x170 fs/ioctl.c:857
do_syscall_x64 arch/x86/entry/common.c:51 [inline]
do_syscall_64+0x55/0xb0 arch/x86/entry/common.c:81
entry_SYSCALL_64_after_hwframe+0x68/0xd2
RIP: 0033:0x7fa1f758e52b
Code: 00 48 89 44 24 18 31 c0 48 8d 44 24 60 c7 04 24 10 00 00 00 48 89 44 24 08 48 8d 44 24 20 48 89 44 24 10 b8 10 00 00 00 0f 05 <89> c2 3d 00 f0 ff ff 77 1c 48 8b 44 24 18 64 48 2b 04 25 28 00 00
RSP: 002b:00007fa1f8475f70 EFLAGS: 00000246 ORIG_RAX: 0000000000000010
RAX: ffffffffffffffda RBX: 0000000000000001 RCX: 00007fa1f758e52b
RDX: 00007fa1f8475ff0 RSI: 0000000040085507 RDI: 0000000000000003
RBP: 0000000000000003 R08: 00007fa1f78e0320 R09: 0000000000000000
R10: 0000000000000003 R11: 0000000000000246 R12: 0000200000000040
R13: 0000000000000000 R14: 00007fa1f77b5fa0 R15: 00007ffdc7d5afc8
Allocated by task 6168:
kasan_save_stack mm/kasan/common.c:45 [inline]
kasan_set_track+0x4e/0x70 mm/kasan/common.c:52
__kasan_slab_alloc+0x6c/0x80 mm/kasan/common.c:328
kasan_slab_alloc include/linux/kasan.h:188 [inline]
slab_post_alloc_hook+0x6e/0x4d0 mm/slab.h:767
slab_alloc_node mm/slub.c:3485 [inline]
kmem_cache_alloc_node+0x150/0x330 mm/slub.c:3530
kmalloc_reserve+0x95/0x260 net/core/skbuff.c:559
__alloc_skb+0x138/0x2c0 net/core/skbuff.c:650
alloc_skb include/linux/skbuff.h:1284 [inline]
netlink_alloc_large_skb net/netlink/af_netlink.c:1195 [inline]
netlink_sendmsg+0x65b/0xbe0 net/netlink/af_netlink.c:1866
sock_sendmsg_nosec net/socket.c:730 [inline]
__sock_sendmsg net/socket.c:745 [inline]
____sys_sendmsg+0x5bf/0x950 net/socket.c:2595
___sys_sendmsg+0x220/0x290 net/socket.c:2649
__sys_sendmsg net/socket.c:2678 [inline]
__do_sys_sendmsg net/socket.c:2687 [inline]
__se_sys_sendmsg+0x1a5/0x270 net/socket.c:2685
do_syscall_x64 arch/x86/entry/common.c:51 [inline]
do_syscall_64+0x55/0xb0 arch/x86/entry/common.c:81
entry_SYSCALL_64_after_hwframe+0x68/0xd2
Freed by task 6168:
kasan_save_stack mm/kasan/common.c:45 [inline]
kasan_set_track+0x4e/0x70 mm/kasan/common.c:52
kasan_save_free_info+0x2e/0x50 mm/kasan/generic.c:522
____kasan_slab_free+0x126/0x1e0 mm/kasan/common.c:236
kasan_slab_free include/linux/kasan.h:164 [inline]
slab_free_hook mm/slub.c:1806 [inline]
slab_free_freelist_hook+0x130/0x1b0 mm/slub.c:1832
slab_free mm/slub.c:3816 [inline]
kmem_cache_free+0xf8/0x280 mm/slub.c:3838
skb_kfree_head net/core/skbuff.c:943 [inline]
skb_free_head net/core/skbuff.c:957 [inline]
skb_release_data+0x60a/0x800 net/core/skbuff.c:987
skb_release_all net/core/skbuff.c:1053 [inline]
__kfree_skb net/core/skbuff.c:1067 [inline]
consume_skb+0xb2/0x110 net/core/skbuff.c:1283
netlink_unicast_kernel net/netlink/af_netlink.c:1324 [inline]
netlink_unicast+0x758/0x8c0 net/netlink/af_netlink.c:1349
netlink_sendmsg+0x8c1/0xbe0 net/netlink/af_netlink.c:1891
sock_sendmsg_nosec net/socket.c:730 [inline]
__sock_sendmsg net/socket.c:745 [inline]
____sys_sendmsg+0x5bf/0x950 net/socket.c:2595
___sys_sendmsg+0x220/0x290 net/socket.c:2649
__sys_sendmsg net/socket.c:2678 [inline]
__do_sys_sendmsg net/socket.c:2687 [inline]
__se_sys_sendmsg+0x1a5/0x270 net/socket.c:2685
do_syscall_x64 arch/x86/entry/common.c:51 [inline]
do_syscall_64+0x55/0xb0 arch/x86/entry/common.c:81
entry_SYSCALL_64_after_hwframe+0x68/0xd2
The buggy address belongs to the object at ffff88801dbdbc00
which belongs to the cache skbuff_small_head of size 640
The buggy address is located 383 bytes to the right of
allocated 640-byte region [ffff88801dbdbc00, ffff88801dbdbe80)
The buggy address belongs to the physical page:
page:ffffea000076f600 refcount:1 mapcount:0 mapping:0000000000000000 index:0x0 pfn:0x1dbd8
head:ffffea000076f600 order:2 entire_mapcount:0 nr_pages_mapped:0 pincount:0
flags: 0xfff00000000840(slab|head|node=0|zone=1|lastcpupid=0x7ff)
page_type: 0xffffffff()
raw: 00fff00000000840 ffff88801c67f780 ffffea0001740700 dead000000000004
raw: 0000000000000000 0000000000150015 00000001ffffffff 0000000000000000
page dumped because: kasan: bad access detected
page_owner tracks the page as allocated
page last allocated via order 2, migratetype Unmovable, gfp_mask 0x1f2820(GFP_ATOMIC|__GFP_NOWARN|__GFP_NORETRY|__GFP_COMP|__GFP_NOMEMALLOC|__GFP_MEMALLOC|__GFP_HARDWALL), pid 0, tgid 0 (swapper/0), ts 390505897947, free_ts 387950999110
set_page_owner include/linux/page_owner.h:31 [inline]
post_alloc_hook+0x1cd/0x210 mm/page_alloc.c:1554
prep_new_page mm/page_alloc.c:1561 [inline]
get_page_from_freelist+0x195c/0x19f0 mm/page_alloc.c:3191
__alloc_pages+0x1e3/0x460 mm/page_alloc.c:4457
alloc_slab_page+0x5d/0x170 mm/slub.c:1876
allocate_slab mm/slub.c:2023 [inline]
new_slab+0x87/0x2e0 mm/slub.c:2076
___slab_alloc+0xc6d/0x12f0 mm/slub.c:3230
__slab_alloc mm/slub.c:3329 [inline]
__slab_alloc_node mm/slub.c:3382 [inline]
slab_alloc_node mm/slub.c:3475 [inline]
kmem_cache_alloc_node+0x1ea/0x330 mm/slub.c:3530
kmalloc_reserve+0x95/0x260 net/core/skbuff.c:559
__alloc_skb+0x138/0x2c0 net/core/skbuff.c:650
__netdev_alloc_skb+0x10c/0x500 net/core/skbuff.c:714
netdev_alloc_skb include/linux/skbuff.h:3249 [inline]
dev_alloc_skb include/linux/skbuff.h:3262 [inline]
__ieee80211_beacon_get+0xe17/0x1600 net/mac80211/tx.c:5435
ieee80211_beacon_get_tim+0xb8/0x560 net/mac80211/tx.c:5557
ieee80211_beacon_get include/net/mac80211.h:5438 [inline]
mac80211_hwsim_beacon_tx+0x3c7/0x780 drivers/net/wireless/virtual/mac80211_hwsim.c:2260
__iterate_interfaces+0x243/0x500 net/mac80211/util.c:766
ieee80211_iterate_active_interfaces_atomic+0xdb/0x180 net/mac80211/util.c:802
mac80211_hwsim_beacon+0xbb/0x1b0 drivers/net/wireless/virtual/mac80211_hwsim.c:2290
page last free stack trace:
reset_page_owner include/linux/page_owner.h:24 [inline]
free_pages_prepare mm/page_alloc.c:1154 [inline]
free_unref_page_prepare+0x7ce/0x8e0 mm/page_alloc.c:2336
free_unref_page+0x32/0x2e0 mm/page_alloc.c:2429
__slab_free+0x35e/0x410 mm/slub.c:3722
qlink_free mm/kasan/quarantine.c:166 [inline]
qlist_free_all+0x75/0xe0 mm/kasan/quarantine.c:185
kasan_quarantine_reduce+0x143/0x160 mm/kasan/quarantine.c:292
__kasan_slab_alloc+0x22/0x80 mm/kasan/common.c:305
kasan_slab_alloc include/linux/kasan.h:188 [inline]
slab_post_alloc_hook+0x6e/0x4d0 mm/slab.h:767
slab_alloc_node mm/slub.c:3485 [inline]
slab_alloc mm/slub.c:3493 [inline]
__kmem_cache_alloc_lru mm/slub.c:3500 [inline]
kmem_cache_alloc_lru+0x115/0x2e0 mm/slub.c:3516
alloc_inode_sb include/linux/fs.h:2946 [inline]
shmem_alloc_inode+0x28/0x40 mm/shmem.c:4420
alloc_inode fs/inode.c:261 [inline]
new_inode_pseudo+0x63/0x1d0 fs/inode.c:1049
new_inode+0x22/0x1b0 fs/inode.c:1075
__shmem_get_inode mm/shmem.c:2468 [inline]
shmem_get_inode+0x34f/0xcc0 mm/shmem.c:2540
shmem_mknod+0x60/0x1d0 mm/shmem.c:3233
shmem_mkdir+0x33/0x60 mm/shmem.c:3298
vfs_mkdir+0x296/0x440 fs/namei.c:4113
do_mkdirat+0x1d4/0x440 fs/namei.c:4136
Memory state around the buggy address:
ffff88801dbdbe80: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
ffff88801dbdbf00: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
>ffff88801dbdbf80: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
^
ffff88801dbdc000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
ffff88801dbdc080: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
==================================================================
----------------
Code disassembly (best guess):
0: 0f 84 37 01 00 00 je 0x13d
6: 48 85 db test %rbx,%rbx
9: 0f 85 56 01 00 00 jne 0x165
f: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1)
14: 4c 8b 75 d0 mov -0x30(%rbp),%r14
18: 4c 89 e7 mov %r12,%rdi
1b: e8 c0 8c 13 09 call 0x9138ce0
20: e8 fb b3 2f 00 call 0x2fb420
25: fb sti
26: 4c 8b 65 c0 mov -0x40(%rbp),%r12
* 2a: 49 8d bc 24 f8 15 00 lea 0x15f8(%r12),%rdi <-- trapping instruction
31: 00
32: 48 89 f8 mov %rdi,%rax
35: 48 c1 e8 03 shr $0x3,%rax
39: 42 0f b6 04 28 movzbl (%rax,%r13,1),%eax
3e: 84 c0 test %al,%al