================================================================== 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