================================================================== BUG: KASAN: use-after-free in mcp2221_raw_event+0x103c/0x10a0 drivers/hid/hid-mcp2221.c:948 Read of size 1 at addr ffff8881358bbfff by task kworker/0:1/10 CPU: 0 UID: 0 PID: 10 Comm: kworker/0:1 Not tainted syzkaller #0 PREEMPT(voluntary) Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/24/2026 Workqueue: usb_hub_wq hub_event Call Trace: __dump_stack lib/dump_stack.c:94 [inline] dump_stack_lvl+0x100/0x190 lib/dump_stack.c:120 print_address_description mm/kasan/report.c:378 [inline] print_report+0x156/0x4c9 mm/kasan/report.c:482 kasan_report+0xdf/0x1a0 mm/kasan/report.c:595 mcp2221_raw_event+0x103c/0x10a0 drivers/hid/hid-mcp2221.c:948 __hid_input_report.constprop.0+0x314/0x460 drivers/hid/hid-core.c:2139 hid_irq_in+0x52e/0x6b0 drivers/hid/usbhid/hid-core.c:286 __usb_hcd_giveback_urb+0x38d/0x610 drivers/usb/core/hcd.c:1657 usb_hcd_giveback_urb+0x3ca/0x4a0 drivers/usb/core/hcd.c:1741 dummy_timer+0xd85/0x3670 drivers/usb/gadget/udc/dummy_hcd.c:1995 __run_hrtimer kernel/time/hrtimer.c:1777 [inline] __hrtimer_run_queues+0x516/0x990 kernel/time/hrtimer.c:1841 hrtimer_run_softirq+0x17d/0x350 kernel/time/hrtimer.c:1858 handle_softirqs+0x1dd/0x8f0 kernel/softirq.c:622 __do_softirq kernel/softirq.c:656 [inline] invoke_softirq kernel/softirq.c:496 [inline] __irq_exit_rcu+0xed/0x150 kernel/softirq.c:723 irq_exit_rcu+0x9/0x30 kernel/softirq.c:739 instr_sysvec_apic_timer_interrupt arch/x86/kernel/apic/apic.c:1056 [inline] sysvec_apic_timer_interrupt+0x8f/0xb0 arch/x86/kernel/apic/apic.c:1056 asm_sysvec_apic_timer_interrupt+0x1a/0x20 arch/x86/include/asm/idtentry.h:697 RIP: 0010:__raw_spin_unlock_irqrestore include/linux/spinlock_api_smp.h:152 [inline] RIP: 0010:_raw_spin_unlock_irqrestore+0x31/0x80 kernel/locking/spinlock.c:194 Code: f5 53 48 8b 74 24 10 48 89 fb 48 83 c7 18 e8 06 01 38 fa 48 89 df e8 ee 4e 38 fa f7 c5 00 02 00 00 75 23 9c 58 f6 c4 02 75 37 01 00 00 00 e8 e5 d9 2b fa 65 8b 05 5e 30 75 05 85 c0 74 16 5b RSP: 0018:ffffc900000ae7f8 EFLAGS: 00000246 RAX: 0000000000000002 RBX: ffff888103a829a8 RCX: 0000000000000040 RDX: 0000000000000000 RSI: ffffffff88dec92b RDI: ffffffff878e97a0 RBP: 0000000000000246 R08: 0000000000000001 R09: 0000000000000000 R10: 0000000000000001 R11: 0000000000000000 R12: ffff88810ab84ea0 R13: ffffc900000ae890 R14: 0000000000000000 R15: ffff888103a829a8 spin_unlock_irqrestore include/linux/spinlock.h:406 [inline] klist_next+0x26c/0x510 lib/klist.c:401 next_driver drivers/base/bus.c:457 [inline] bus_for_each_drv+0x107/0x1e0 drivers/base/bus.c:499 __device_attach+0x1e4/0x4d0 drivers/base/dd.c:1031 device_initial_probe+0xaf/0xd0 drivers/base/dd.c:1086 bus_probe_device+0x64/0x160 drivers/base/bus.c:574 device_add+0x11d9/0x1950 drivers/base/core.c:3689 i2c_register_adapter+0x39e/0x1240 drivers/i2c/i2c-core-base.c:1573 i2c_add_adapter drivers/i2c/i2c-core-base.c:1673 [inline] i2c_add_adapter+0x10a/0x1a0 drivers/i2c/i2c-core-base.c:1653 devm_i2c_add_adapter+0x1b/0x90 drivers/i2c/i2c-core-base.c:1845 mcp2221_probe.cold+0x5de/0xab3 drivers/hid/hid-mcp2221.c:1289 __hid_device_probe drivers/hid/hid-core.c:2775 [inline] hid_device_probe+0x50e/0x800 drivers/hid/hid-core.c:2812 call_driver_probe drivers/base/dd.c:581 [inline] really_probe+0x241/0xa60 drivers/base/dd.c:659 __driver_probe_device+0x1de/0x400 drivers/base/dd.c:801 driver_probe_device+0x4c/0x1b0 drivers/base/dd.c:831 __device_attach_driver+0x1df/0x340 drivers/base/dd.c:959 bus_for_each_drv+0x159/0x1e0 drivers/base/bus.c:500 __device_attach+0x1e4/0x4d0 drivers/base/dd.c:1031 device_initial_probe+0xaf/0xd0 drivers/base/dd.c:1086 bus_probe_device+0x64/0x160 drivers/base/bus.c:574 device_add+0x11d9/0x1950 drivers/base/core.c:3689 hid_add_device+0x2bf/0x440 drivers/hid/hid-core.c:2951 usbhid_probe+0xd57/0x1350 drivers/hid/usbhid/hid-core.c:1450 usb_probe_interface+0x303/0x8f0 drivers/usb/core/driver.c:396 call_driver_probe drivers/base/dd.c:581 [inline] really_probe+0x241/0xa60 drivers/base/dd.c:659 __driver_probe_device+0x1de/0x400 drivers/base/dd.c:801 driver_probe_device+0x4c/0x1b0 drivers/base/dd.c:831 __device_attach_driver+0x1df/0x340 drivers/base/dd.c:959 bus_for_each_drv+0x159/0x1e0 drivers/base/bus.c:500 __device_attach+0x1e4/0x4d0 drivers/base/dd.c:1031 device_initial_probe+0xaf/0xd0 drivers/base/dd.c:1086 bus_probe_device+0x64/0x160 drivers/base/bus.c:574 device_add+0x11d9/0x1950 drivers/base/core.c:3689 usb_set_configuration+0xd97/0x1c60 drivers/usb/core/message.c:2210 usb_generic_driver_probe+0xa1/0xe0 drivers/usb/core/generic.c:250 usb_probe_device+0xef/0x400 drivers/usb/core/driver.c:291 call_driver_probe drivers/base/dd.c:581 [inline] really_probe+0x241/0xa60 drivers/base/dd.c:659 __driver_probe_device+0x1de/0x400 drivers/base/dd.c:801 driver_probe_device+0x4c/0x1b0 drivers/base/dd.c:831 __device_attach_driver+0x1df/0x340 drivers/base/dd.c:959 bus_for_each_drv+0x159/0x1e0 drivers/base/bus.c:500 __device_attach+0x1e4/0x4d0 drivers/base/dd.c:1031 device_initial_probe+0xaf/0xd0 drivers/base/dd.c:1086 bus_probe_device+0x64/0x160 drivers/base/bus.c:574 device_add+0x11d9/0x1950 drivers/base/core.c:3689 usb_new_device.cold+0x685/0x115c drivers/usb/core/hub.c:2695 hub_port_connect drivers/usb/core/hub.c:5567 [inline] hub_port_connect_change drivers/usb/core/hub.c:5707 [inline] port_event drivers/usb/core/hub.c:5871 [inline] hub_event+0x314d/0x4af0 drivers/usb/core/hub.c:5953 process_one_work+0x9c2/0x1840 kernel/workqueue.c:3257 process_scheduled_works kernel/workqueue.c:3340 [inline] worker_thread+0x5da/0xe40 kernel/workqueue.c:3421 kthread+0x3b3/0x730 kernel/kthread.c:463 ret_from_fork+0x6c3/0xa20 arch/x86/kernel/process.c:158 ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:246 The buggy address belongs to the physical page: page: refcount:0 mapcount:0 mapping:0000000000000000 index:0xffff888100000000 pfn:0x1358bb flags: 0x200000000000000(node=0|zone=2) raw: 0200000000000000 dead000000000100 dead000000000122 0000000000000000 raw: ffff888100000000 0000000000000000 00000000ffffffff 0000000000000000 page dumped because: kasan: bad access detected page_owner tracks the page as freed page last allocated via order 0, migratetype Unmovable, gfp_mask 0xcc0(GFP_KERNEL), pid 10, tgid 10 (kworker/0:1), ts 2339533208356, free_ts 2381188058221 set_page_owner include/linux/page_owner.h:32 [inline] post_alloc_hook+0x1e1/0x250 mm/page_alloc.c:1884 prep_new_page mm/page_alloc.c:1892 [inline] get_page_from_freelist+0xd57/0x3b20 mm/page_alloc.c:3945 __alloc_frozen_pages_noprof+0x269/0x2230 mm/page_alloc.c:5240 __alloc_pages_noprof mm/page_alloc.c:5274 [inline] alloc_pages_bulk_noprof+0x73f/0x12c0 mm/page_alloc.c:5194 ___alloc_pages_bulk mm/kasan/shadow.c:345 [inline] __kasan_populate_vmalloc_do mm/kasan/shadow.c:370 [inline] __kasan_populate_vmalloc+0xf0/0x210 mm/kasan/shadow.c:424 kasan_populate_vmalloc include/linux/kasan.h:580 [inline] alloc_vmap_area+0x935/0x2a00 mm/vmalloc.c:2124 __get_vm_area_node+0x1ca/0x330 mm/vmalloc.c:3219 __vmalloc_node_range_noprof+0x213/0x1530 mm/vmalloc.c:4011 __vmalloc_node_noprof+0xad/0xf0 mm/vmalloc.c:4111 __vmalloc_noprof+0xa3/0x120 mm/vmalloc.c:4127 __vmalloc_array_noprof mm/util.c:633 [inline] vmalloc_array_noprof+0x43/0x70 mm/util.c:644 dvb_dmxdev_init+0xbd/0x4c0 drivers/media/dvb-core/dmxdev.c:1417 dvb_usbv2_adapter_dvb_init drivers/media/usb/dvb-usb-v2/dvb_usb_core.c:484 [inline] dvb_usbv2_adapter_init drivers/media/usb/dvb-usb-v2/dvb_usb_core.c:801 [inline] dvb_usbv2_init drivers/media/usb/dvb-usb-v2/dvb_usb_core.c:866 [inline] dvb_usbv2_probe.cold+0x2cdc/0x3b31 drivers/media/usb/dvb-usb-v2/dvb_usb_core.c:981 usb_probe_interface+0x303/0x8f0 drivers/usb/core/driver.c:396 call_driver_probe drivers/base/dd.c:581 [inline] really_probe+0x241/0xa60 drivers/base/dd.c:659 __driver_probe_device+0x1de/0x400 drivers/base/dd.c:801 page last free pid 8113 tgid 8113 stack trace: reset_page_owner include/linux/page_owner.h:25 [inline] free_pages_prepare mm/page_alloc.c:1433 [inline] __free_frozen_pages+0x7d1/0x1010 mm/page_alloc.c:2973 kasan_depopulate_vmalloc_pte+0x5d/0x80 mm/kasan/shadow.c:484 apply_to_pte_range mm/memory.c:3182 [inline] apply_to_pmd_range mm/memory.c:3226 [inline] apply_to_pud_range mm/memory.c:3262 [inline] apply_to_p4d_range mm/memory.c:3298 [inline] __apply_to_page_range+0xb1d/0x1520 mm/memory.c:3334 __kasan_release_vmalloc+0xd7/0xe0 mm/kasan/shadow.c:602 kasan_release_vmalloc include/linux/kasan.h:593 [inline] kasan_release_vmalloc_node mm/vmalloc.c:2282 [inline] purge_vmap_node+0x1c6/0xaa0 mm/vmalloc.c:2299 __purge_vmap_area_lazy+0x8e5/0xbc0 mm/vmalloc.c:2389 drain_vmap_area_work+0x27/0x40 mm/vmalloc.c:2423 process_one_work+0x9c2/0x1840 kernel/workqueue.c:3257 process_scheduled_works kernel/workqueue.c:3340 [inline] worker_thread+0x5da/0xe40 kernel/workqueue.c:3421 kthread+0x3b3/0x730 kernel/kthread.c:463 ret_from_fork+0x6c3/0xa20 arch/x86/kernel/process.c:158 ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:246 Memory state around the buggy address: ffff8881358bbe80: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ffff8881358bbf00: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff >ffff8881358bbf80: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ^ ffff8881358bc000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ffff8881358bc080: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ================================================================== ---------------- Code disassembly (best guess): 0: f5 cmc 1: 53 push %rbx 2: 48 8b 74 24 10 mov 0x10(%rsp),%rsi 7: 48 89 fb mov %rdi,%rbx a: 48 83 c7 18 add $0x18,%rdi e: e8 06 01 38 fa call 0xfa380119 13: 48 89 df mov %rbx,%rdi 16: e8 ee 4e 38 fa call 0xfa384f09 1b: f7 c5 00 02 00 00 test $0x200,%ebp 21: 75 23 jne 0x46 23: 9c pushf 24: 58 pop %rax 25: f6 c4 02 test $0x2,%ah 28: 75 37 jne 0x61 * 2a: bf 01 00 00 00 mov $0x1,%edi <-- trapping instruction 2f: e8 e5 d9 2b fa call 0xfa2bda19 34: 65 8b 05 5e 30 75 05 mov %gs:0x575305e(%rip),%eax # 0x5753099 3b: 85 c0 test %eax,%eax 3d: 74 16 je 0x55 3f: 5b pop %rbx