kobject_add_internal failed for firmware (error: -2 parent: 5-1:0.254) firmware xc3028-v27.fw: fw_load_sysfs_fallback: device_register failed ================================================================== BUG: KASAN: use-after-free in load_firmware_cb+0x269/0x290 drivers/media/tuners/tuner-xc2028.c:1364 Read of size 8 at addr ffff888021b13318 by task kworker/0:2/1257 CPU: 0 PID: 1257 Comm: kworker/0:2 Not tainted 5.17.0-rc7-syzkaller #0 Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.14.0-2 04/01/2014 Workqueue: events request_firmware_work_func Call Trace: __dump_stack lib/dump_stack.c:88 [inline] dump_stack_lvl+0xcd/0x134 lib/dump_stack.c:106 print_address_description.constprop.0.cold+0x8d/0x303 mm/kasan/report.c:255 __kasan_report mm/kasan/report.c:442 [inline] kasan_report.cold+0x83/0xdf mm/kasan/report.c:459 load_firmware_cb+0x269/0x290 drivers/media/tuners/tuner-xc2028.c:1364 request_firmware_work_func+0x12c/0x230 drivers/base/firmware_loader/main.c:1022 process_one_work+0x9ac/0x1650 kernel/workqueue.c:2307 worker_thread+0x657/0x1110 kernel/workqueue.c:2454 kthread+0x2e9/0x3a0 kernel/kthread.c:377 ret_from_fork+0x1f/0x30 arch/x86/entry/entry_64.S:295 Allocated by task 1257: kasan_save_stack+0x1e/0x40 mm/kasan/common.c:38 kasan_set_track mm/kasan/common.c:45 [inline] set_alloc_info mm/kasan/common.c:436 [inline] ____kasan_kmalloc mm/kasan/common.c:515 [inline] ____kasan_kmalloc mm/kasan/common.c:474 [inline] __kasan_kmalloc+0xa6/0xd0 mm/kasan/common.c:524 kasan_kmalloc include/linux/kasan.h:270 [inline] kmem_cache_alloc_trace+0x1ea/0x4a0 mm/slab.c:3567 kmalloc include/linux/slab.h:581 [inline] kzalloc include/linux/slab.h:714 [inline] tuner_probe+0xa4/0x1180 drivers/media/v4l2-core/tuner-core.c:638 i2c_device_probe+0xa0c/0xb90 drivers/i2c/i2c-core-base.c:563 call_driver_probe drivers/base/dd.c:517 [inline] really_probe+0x245/0xcc0 drivers/base/dd.c:596 __driver_probe_device+0x338/0x4d0 drivers/base/dd.c:755 driver_probe_device+0x4c/0x1a0 drivers/base/dd.c:785 __device_attach_driver+0x20b/0x2f0 drivers/base/dd.c:902 bus_for_each_drv+0x15f/0x1e0 drivers/base/bus.c:427 __device_attach+0x228/0x4a0 drivers/base/dd.c:973 bus_probe_device+0x1e4/0x290 drivers/base/bus.c:487 device_add+0xb83/0x1e20 drivers/base/core.c:3405 i2c_new_client_device+0x67b/0xb60 drivers/i2c/i2c-core-base.c:969 v4l2_i2c_new_subdev_board+0xaf/0x2c0 drivers/media/v4l2-core/v4l2-i2c.c:80 v4l2_i2c_new_subdev+0x102/0x170 drivers/media/v4l2-core/v4l2-i2c.c:135 em28xx_v4l2_init drivers/media/usb/em28xx/em28xx-video.c:2627 [inline] em28xx_v4l2_init.cold+0x9cb/0x32a7 drivers/media/usb/em28xx/em28xx-video.c:2520 em28xx_init_extension+0x12f/0x1f0 drivers/media/usb/em28xx/em28xx-core.c:1126 request_module_async+0x5d/0x70 drivers/media/usb/em28xx/em28xx-cards.c:3415 process_one_work+0x9ac/0x1650 kernel/workqueue.c:2307 worker_thread+0x657/0x1110 kernel/workqueue.c:2454 kthread+0x2e9/0x3a0 kernel/kthread.c:377 ret_from_fork+0x1f/0x30 arch/x86/entry/entry_64.S:295 Freed by task 1257: kasan_save_stack+0x1e/0x40 mm/kasan/common.c:38 kasan_set_track+0x21/0x30 mm/kasan/common.c:45 kasan_set_free_info+0x20/0x30 mm/kasan/generic.c:370 ____kasan_slab_free mm/kasan/common.c:366 [inline] ____kasan_slab_free+0xff/0x140 mm/kasan/common.c:328 kasan_slab_free include/linux/kasan.h:236 [inline] __cache_free mm/slab.c:3437 [inline] kfree+0xf8/0x2b0 mm/slab.c:3794 tuner_remove+0x198/0x200 drivers/media/v4l2-core/tuner-core.c:791 i2c_device_remove+0x7b/0x240 drivers/i2c/i2c-core-base.c:606 __device_release_driver+0x3bd/0x760 drivers/base/dd.c:1207 device_release_driver_internal drivers/base/dd.c:1242 [inline] device_release_driver+0x26/0x40 drivers/base/dd.c:1265 bus_remove_device+0x2eb/0x5a0 drivers/base/bus.c:529 device_del+0x4f3/0xc80 drivers/base/core.c:3592 device_unregister+0x1f/0xc0 drivers/base/core.c:3624 i2c_unregister_device+0x38/0x40 include/linux/err.h:41 v4l2_i2c_subdev_unregister+0xa2/0xc0 drivers/media/v4l2-core/v4l2-i2c.c:28 v4l2_device_unregister drivers/media/v4l2-core/v4l2-device.c:102 [inline] v4l2_device_unregister+0x20d/0x2e0 drivers/media/v4l2-core/v4l2-device.c:88 em28xx_v4l2_init drivers/media/usb/em28xx/em28xx-video.c:2908 [inline] em28xx_v4l2_init.cold+0xd26/0x32a7 drivers/media/usb/em28xx/em28xx-video.c:2520 em28xx_init_extension+0x12f/0x1f0 drivers/media/usb/em28xx/em28xx-core.c:1126 request_module_async+0x5d/0x70 drivers/media/usb/em28xx/em28xx-cards.c:3415 process_one_work+0x9ac/0x1650 kernel/workqueue.c:2307 worker_thread+0x657/0x1110 kernel/workqueue.c:2454 kthread+0x2e9/0x3a0 kernel/kthread.c:377 ret_from_fork+0x1f/0x30 arch/x86/entry/entry_64.S:295 The buggy address belongs to the object at ffff888021b13000 which belongs to the cache kmalloc-2k of size 2048 The buggy address is located 792 bytes inside of 2048-byte region [ffff888021b13000, ffff888021b13800) The buggy address belongs to the page: page:ffffea000086c4c0 refcount:1 mapcount:0 mapping:0000000000000000 index:0x0 pfn:0x21b13 flags: 0xfff00000000200(slab|node=0|zone=1|lastcpupid=0x7ff) raw: 00fff00000000200 ffffea0000615808 ffffea00007004c8 ffff888010c40800 raw: 0000000000000000 ffff888021b13000 0000000100000001 0000000000000000 page dumped because: kasan: bad access detected page_owner tracks the page as allocated page last allocated via order 0, migratetype Unmovable, gfp_mask 0x2420c0(__GFP_IO|__GFP_FS|__GFP_NOWARN|__GFP_COMP|__GFP_THISNODE), pid 1257, ts 169309092891, free_ts 167105668032 prep_new_page mm/page_alloc.c:2434 [inline] get_page_from_freelist+0xa72/0x2f50 mm/page_alloc.c:4165 __alloc_pages+0x1b2/0x500 mm/page_alloc.c:5389 __alloc_pages_node include/linux/gfp.h:572 [inline] kmem_getpages mm/slab.c:1378 [inline] cache_grow_begin+0x75/0x390 mm/slab.c:2584 cache_alloc_refill+0x27f/0x380 mm/slab.c:2957 ____cache_alloc mm/slab.c:3040 [inline] ____cache_alloc mm/slab.c:3023 [inline] __do_cache_alloc mm/slab.c:3267 [inline] slab_alloc mm/slab.c:3308 [inline] kmem_cache_alloc_trace+0x380/0x4a0 mm/slab.c:3565 kmalloc include/linux/slab.h:581 [inline] kzalloc include/linux/slab.h:714 [inline] tuner_probe+0xa4/0x1180 drivers/media/v4l2-core/tuner-core.c:638 i2c_device_probe+0xa0c/0xb90 drivers/i2c/i2c-core-base.c:563 call_driver_probe drivers/base/dd.c:517 [inline] really_probe+0x245/0xcc0 drivers/base/dd.c:596 __driver_probe_device+0x338/0x4d0 drivers/base/dd.c:755 driver_probe_device+0x4c/0x1a0 drivers/base/dd.c:785 __device_attach_driver+0x20b/0x2f0 drivers/base/dd.c:902 bus_for_each_drv+0x15f/0x1e0 drivers/base/bus.c:427 __device_attach+0x228/0x4a0 drivers/base/dd.c:973 bus_probe_device+0x1e4/0x290 drivers/base/bus.c:487 device_add+0xb83/0x1e20 drivers/base/core.c:3405 i2c_new_client_device+0x67b/0xb60 drivers/i2c/i2c-core-base.c:969 page last free stack trace: reset_page_owner include/linux/page_owner.h:24 [inline] free_pages_prepare mm/page_alloc.c:1352 [inline] free_pcp_prepare+0x374/0x870 mm/page_alloc.c:1404 free_unref_page_prepare mm/page_alloc.c:3325 [inline] free_unref_page+0x19/0x690 mm/page_alloc.c:3404 __put_single_page mm/swap.c:99 [inline] __put_page+0x13d/0x1e0 mm/swap.c:130 folio_put include/linux/mm.h:1199 [inline] put_page include/linux/mm.h:1237 [inline] free_page_and_swap_cache+0x1f2/0x270 mm/swap_state.c:305 __tlb_remove_table arch/x86/include/asm/tlb.h:37 [inline] __tlb_remove_table_free mm/mmu_gather.c:102 [inline] tlb_remove_table_rcu+0x85/0xe0 mm/mmu_gather.c:157 rcu_do_batch kernel/rcu/tree.c:2527 [inline] rcu_core+0x7b1/0x1820 kernel/rcu/tree.c:2778 __do_softirq+0x29b/0x9c2 kernel/softirq.c:558 Memory state around the buggy address: ffff888021b13200: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb ffff888021b13280: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb >ffff888021b13300: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb ^ ffff888021b13380: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb ffff888021b13400: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb ==================================================================