==================================================================
BUG: KASAN: slab-out-of-bounds in mcp2221_raw_event+0x101c/0x1090 drivers/hid/hid-mcp2221.c:964
Read of size 1 at addr ffff8881355b3fff by task kworker/u8:2/32392
CPU: 1 UID: 0 PID: 32392 Comm: kworker/u8:2 Not tainted syzkaller #0 PREEMPT(lazy)
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 05/09/2026
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+0x13d/0x4b0 mm/kasan/report.c:482
kasan_report+0xdf/0x1c0 mm/kasan/report.c:595
mcp2221_raw_event+0x101c/0x1090 drivers/hid/hid-mcp2221.c:964
__hid_input_report.constprop.0+0x319/0x470 drivers/hid/hid-core.c:2161
hid_irq_in+0x55d/0x710 drivers/hid/usbhid/hid-core.c:287
__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+0xda1/0x36c0 drivers/usb/gadget/udc/dummy_hcd.c:2005
__run_hrtimer kernel/time/hrtimer.c:2032 [inline]
__hrtimer_run_queues+0x462/0x9c0 kernel/time/hrtimer.c:2096
hrtimer_run_softirq+0x17d/0x2c0 kernel/time/hrtimer.c:2113
handle_softirqs+0x1dd/0x990 kernel/softirq.c:622
__do_softirq kernel/softirq.c:656 [inline]
invoke_softirq kernel/softirq.c:496 [inline]
__irq_exit_rcu+0x160/0x210 kernel/softirq.c:735
irq_exit_rcu+0x9/0x30 kernel/softirq.c:752
instr_sysvec_apic_timer_interrupt arch/x86/kernel/apic/apic.c:1062 [inline]
sysvec_apic_timer_interrupt+0x8f/0xb0 arch/x86/kernel/apic/apic.c:1062
asm_sysvec_apic_timer_interrupt+0x1a/0x20 arch/x86/include/asm/idtentry.h:674
RIP: 0010:0xffffffffa0000c30
Code: cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc 41 ff e4 cc 41 ff e4 cc 41 ff e4 cc 41 ff e4 cc <41> ff e4 cc 41 ff e4 cc 41 ff e5 cc 41 ff e5 cc cc cc cc cc cc cc
RSP: 0018:ffffc90002e974d8 EFLAGS: 00000282
RAX: ffffffff817c73b9 RBX: ffffc90002e974e0 RCX: ffffc90002e97434
RDX: 1ffff920005d2ea5 RSI: ffffffff817c73b9 RDI: ffffc90002e975a0
RBP: ffffc90002e97570 R08: 0000000000000001 R09: 0000000000000007
R10: 0000000000000200 R11: 00000000000125d8 R12: ffffffff819e9580
R13: ffffc90002e975a0 R14: 0000000000000000 R15: ffff888116a33c00
Allocated by task 5226:
kasan_save_stack+0x30/0x50 mm/kasan/common.c:57
kasan_save_track+0x14/0x30 mm/kasan/common.c:78
poison_kmalloc_redzone mm/kasan/common.c:398 [inline]
__kasan_kmalloc+0x8f/0xa0 mm/kasan/common.c:415
kasan_kmalloc include/linux/kasan.h:263 [inline]
__kmalloc_cache_noprof+0x35e/0x670 mm/slub.c:5515
_kmalloc_noprof include/linux/slab.h:969 [inline]
_kzalloc_noprof include/linux/slab.h:1290 [inline]
snd_info_create_entry+0x51/0x400 sound/core/info.c:666
snd_info_create_module_entry sound/core/info.c:704 [inline]
create_subdir sound/core/info.c:414 [inline]
snd_info_card_create+0xdf/0x2a0 sound/core/info.c:488
snd_card_init+0x8b6/0x11b0 sound/core/init.c:356
snd_card_new+0x99/0x110 sound/core/init.c:188
snd_usb_audio_create sound/usb/card.c:763 [inline]
usb_audio_probe+0x16be/0x3b10 sound/usb/card.c:977
usb_probe_interface+0x303/0x8f0 drivers/usb/core/driver.c:396
call_driver_probe drivers/base/dd.c:628 [inline]
really_probe+0x241/0xa60 drivers/base/dd.c:706
__driver_probe_device+0x20e/0x450 drivers/base/dd.c:868
driver_probe_device+0x4a/0x140 drivers/base/dd.c:898
__device_attach_driver+0x1df/0x320 drivers/base/dd.c:1026
bus_for_each_drv+0x159/0x1e0 drivers/base/bus.c:500
__device_attach+0x1e4/0x4d0 drivers/base/dd.c:1098
device_initial_probe+0xaf/0xd0 drivers/base/dd.c:1153
bus_probe_device+0x64/0x160 drivers/base/bus.c:620
device_add+0x121d/0x1970 drivers/base/core.c:3772
usb_set_configuration+0xd97/0x1c60 drivers/usb/core/message.c:2268
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:628 [inline]
really_probe+0x241/0xa60 drivers/base/dd.c:706
__driver_probe_device+0x20e/0x450 drivers/base/dd.c:868
driver_probe_device+0x4a/0x140 drivers/base/dd.c:898
__device_attach_driver+0x1df/0x320 drivers/base/dd.c:1026
bus_for_each_drv+0x159/0x1e0 drivers/base/bus.c:500
__device_attach+0x1e4/0x4d0 drivers/base/dd.c:1098
device_initial_probe+0xaf/0xd0 drivers/base/dd.c:1153
bus_probe_device+0x64/0x160 drivers/base/bus.c:620
device_add+0x121d/0x1970 drivers/base/core.c:3772
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+0xa23/0x1940 kernel/workqueue.c:3322
process_scheduled_works kernel/workqueue.c:3405 [inline]
worker_thread+0x5ef/0xe50 kernel/workqueue.c:3486
kthread+0x370/0x450 kernel/kthread.c:436
ret_from_fork+0x69a/0xc80 arch/x86/kernel/process.c:158
ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:245
The buggy address belongs to the object at ffff8881355b3e00
which belongs to the cache kmalloc-256 of size 256
The buggy address is located 255 bytes to the right of
allocated 256-byte region [ffff8881355b3e00, ffff8881355b3f00)
The buggy address belongs to the physical page:
page: refcount:0 mapcount:0 mapping:0000000000000000 index:0x0 pfn:0x1355b2
head: order:1 mapcount:0 entire_mapcount:0 nr_pages_mapped:0 pincount:0
flags: 0x200000000000040(head|node=0|zone=2)
page_type: f5(slab)
raw: 0200000000000040 ffff888100041b40 dead000000000100 dead000000000122
raw: 0000000000000000 0000000800100010 00000000f5000000 0000000000000000
head: 0200000000000040 ffff888100041b40 dead000000000100 dead000000000122
head: 0000000000000000 0000000800100010 00000000f5000000 0000000000000000
head: 0200000000000001 ffffffffffffff81 00000000ffffffff 00000000ffffffff
head: ffff8881355b3500 0000000000000000 00000000ffffffff 0000000000000002
page dumped because: kasan: bad access detected
page_owner tracks the page as allocated
page last allocated via order 1, migratetype Unmovable, gfp_mask 0xd2040(__GFP_IO|__GFP_NOWARN|__GFP_NORETRY|__GFP_COMP|__GFP_NOMEMALLOC), pid 14906, tgid 14906 (udevd), ts 1647033421016, free_ts 1617847903000
set_page_owner include/linux/page_owner.h:32 [inline]
post_alloc_hook+0xfd/0x120 mm/page_alloc.c:1859
prep_new_page mm/page_alloc.c:1867 [inline]
get_page_from_freelist+0xf25/0x3400 mm/page_alloc.c:3946
__alloc_frozen_pages_noprof+0x28f/0x2b90 mm/page_alloc.c:5304
alloc_slab_page mm/slub.c:3294 [inline]
allocate_slab mm/slub.c:3408 [inline]
new_slab+0xa2/0x670 mm/slub.c:3454
refill_objects+0xe3/0x410 mm/slub.c:7338
refill_sheaf mm/slub.c:2832 [inline]
__pcs_replace_empty_main+0x376/0x680 mm/slub.c:4703
alloc_from_pcs mm/slub.c:4801 [inline]
slab_alloc_node mm/slub.c:4933 [inline]
__kmalloc_cache_noprof+0x50e/0x670 mm/slub.c:5511
_kmalloc_noprof include/linux/slab.h:969 [inline]
inode_doinit_use_xattr+0x54/0x330 security/selinux/hooks.c:1377
inode_doinit_with_dentry+0x10e6/0x1320 security/selinux/hooks.c:1572
selinux_d_instantiate+0x26/0x40 security/selinux/hooks.c:6654
security_d_instantiate+0x62/0xc0 security/security.c:3704
d_splice_alias_ops+0xd7/0x15c0 fs/dcache.c:3244
kernfs_iop_lookup+0x23f/0x2d0 fs/kernfs/dir.c:1288
__lookup_slow+0x155/0x320 fs/namei.c:1919
lookup_slow+0x50/0x70 fs/namei.c:1936
walk_component fs/namei.c:2282 [inline]
link_path_walk+0x1377/0x1cc0 fs/namei.c:2656
page last free pid 19799 tgid 19787 stack trace:
reset_page_owner include/linux/page_owner.h:25 [inline]
__free_pages_prepare mm/page_alloc.c:1406 [inline]
__free_frozen_pages+0x716/0xf50 mm/page_alloc.c:2950
__pagetable_free include/linux/mm.h:3695 [inline]
pagetable_free include/linux/mm.h:3719 [inline]
pagetable_dtor_free include/linux/mm.h:3818 [inline]
__pgd_free include/asm-generic/pgalloc.h:303 [inline]
_pgd_free arch/x86/mm/pgtable.c:308 [inline]
pgd_free+0x3eb/0x540 arch/x86/mm/pgtable.c:370
mm_free_pgd kernel/fork.c:590 [inline]
__mmdrop+0x139/0x4a0 kernel/fork.c:733
mmdrop include/linux/sched/mm.h:55 [inline]
__mmput kernel/fork.c:1194 [inline]
mmput+0x385/0x430 kernel/fork.c:1205
exit_mm kernel/exit.c:610 [inline]
do_exit+0x833/0x2a50 kernel/exit.c:992
do_group_exit+0xd5/0x2a0 kernel/exit.c:1147
get_signal+0x1ec7/0x21e0 kernel/signal.c:3038
arch_do_signal_or_restart+0x91/0x7e0 arch/x86/kernel/signal.c:337
__exit_to_user_mode_loop kernel/entry/common.c:66 [inline]
exit_to_user_mode_loop+0xd2/0x530 kernel/entry/common.c:101
__exit_to_user_mode_prepare include/linux/irq-entry-common.h:207 [inline]
syscall_exit_to_user_mode_prepare include/linux/irq-entry-common.h:230 [inline]
syscall_exit_to_user_mode include/linux/entry-common.h:318 [inline]
ret_from_fork+0x6cd/0xc80 arch/x86/kernel/process.c:167
ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:245
Memory state around the buggy address:
ffff8881355b3e80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
ffff8881355b3f00: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
>ffff8881355b3f80: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
^
ffff8881355b4000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
ffff8881355b4080: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
==================================================================
----------------
Code disassembly (best guess):
0: cc int3
1: cc int3
2: cc int3
3: cc int3
4: cc int3
5: cc int3
6: cc int3
7: cc int3
8: cc int3
9: cc int3
a: cc int3
b: cc int3
c: cc int3
d: cc int3
e: cc int3
f: cc int3
10: cc int3
11: cc int3
12: cc int3
13: cc int3
14: cc int3
15: cc int3
16: cc int3
17: cc int3
18: cc int3
19: cc int3
1a: 41 ff e4 jmp *%r12
1d: cc int3
1e: 41 ff e4 jmp *%r12
21: cc int3
22: 41 ff e4 jmp *%r12
25: cc int3
26: 41 ff e4 jmp *%r12
29: cc int3
* 2a: 41 ff e4 jmp *%r12 <-- trapping instruction
2d: cc int3
2e: 41 ff e4 jmp *%r12
31: cc int3
32: 41 ff e5 jmp *%r13
35: cc int3
36: 41 ff e5 jmp *%r13
39: cc int3
3a: cc int3
3b: cc int3
3c: cc int3
3d: cc int3
3e: cc int3
3f: cc int3