xpad 9-1:179.65: xpad_irq_in - usb_submit_urb failed with result -19 xpad 9-1:179.65: xpad_irq_out - usb_submit_urb failed with result -19 ================================================================== BUG: KASAN: slab-use-after-free in debug_spin_lock_before kernel/locking/spinlock_debug.c:86 [inline] BUG: KASAN: slab-use-after-free in do_raw_spin_lock+0x23b/0x260 kernel/locking/spinlock_debug.c:115 Read of size 4 at addr ffff888029d4285c by task syz.8.5805/28583 CPU: 0 UID: 0 PID: 28583 Comm: syz.8.5805 Tainted: G L syzkaller #0 PREEMPT(full) Tainted: [L]=SOFTLOCKUP Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.3-debian-1.16.3-2 04/01/2014 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/0x1d0 mm/kasan/report.c:595 debug_spin_lock_before kernel/locking/spinlock_debug.c:86 [inline] do_raw_spin_lock+0x23b/0x260 kernel/locking/spinlock_debug.c:115 __raw_spin_lock_irqsave include/linux/spinlock_api_smp.h:133 [inline] _raw_spin_lock_irqsave+0x42/0x60 kernel/locking/spinlock.c:166 __wake_up_common_lock kernel/sched/wait.c:124 [inline] __wake_up+0x1c/0x60 kernel/sched/wait.c:146 __usb_unanchor_urb drivers/usb/core/urb.c:155 [inline] usb_anchor_resume_wakeups+0xc7/0xf0 drivers/usb/core/urb.c:149 __usb_hcd_giveback_urb+0x3d6/0x610 drivers/usb/core/hcd.c:1658 usb_hcd_giveback_urb+0x3ca/0x4a0 drivers/usb/core/hcd.c:1739 dummy_timer+0xda1/0x36c0 drivers/usb/gadget/udc/dummy_hcd.c:2005 __run_hrtimer kernel/time/hrtimer.c:1930 [inline] __hrtimer_run_queues+0x470/0xa00 kernel/time/hrtimer.c:1994 hrtimer_run_softirq+0x17d/0x2c0 kernel/time/hrtimer.c:2011 handle_softirqs+0x1ea/0xa00 kernel/softirq.c:622 __do_softirq kernel/softirq.c:656 [inline] invoke_softirq kernel/softirq.c:496 [inline] __irq_exit_rcu+0x162/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:1061 [inline] sysvec_apic_timer_interrupt+0xa3/0xc0 arch/x86/kernel/apic/apic.c:1061 asm_sysvec_apic_timer_interrupt+0x1a/0x20 arch/x86/include/asm/idtentry.h:697 RIP: 0010:finish_task_switch.isra.0+0x2d3/0x1010 kernel/sched/core.c:5245 Code: 2f 0a 00 00 41 c7 87 e0 0d 00 00 00 00 00 00 e9 0f 04 00 00 49 8d 7f 48 e8 1a 03 b5 09 e8 35 81 3b 00 fb 48 8d bb c8 16 00 00 <48> b8 00 00 00 00 00 fc ff df 48 89 fa 48 c1 ea 03 0f b6 04 02 84 RSP: 0000:ffffc9000415f818 EFLAGS: 00000202 RAX: 0000000000062a2f RBX: ffff8880292e0000 RCX: 0000000000000000 RDX: 0000000000000000 RSI: ffffffff8df1a757 RDI: ffff8880292e16c8 RBP: ffffc9000415f870 R08: 0000000000000001 R09: 0000000000000000 R10: 0000000000000001 R11: ffffffff81d4bcc2 R12: ffff888026dca540 R13: 0000000000000001 R14: ffffffff90d76fc4 R15: ffff88802b23b3c0 context_switch kernel/sched/core.c:5391 [inline] __schedule+0x129d/0x67a0 kernel/sched/core.c:7189 __schedule_loop kernel/sched/core.c:7268 [inline] schedule+0xdd/0x390 kernel/sched/core.c:7283 schedule_timeout+0x127/0x280 kernel/time/sleep_timeout.c:99 snd_rawmidi_write+0x492/0xc60 sound/core/rawmidi.c:1616 do_loop_readv_writev fs/read_write.c:852 [inline] do_loop_readv_writev fs/read_write.c:837 [inline] vfs_writev+0x5ea/0xe10 fs/read_write.c:1061 do_writev+0x28a/0x340 fs/read_write.c:1105 do_syscall_32_irqs_on arch/x86/entry/syscall_32.c:83 [inline] __do_fast_syscall_32+0xe7/0x970 arch/x86/entry/syscall_32.c:307 do_fast_syscall_32+0x32/0x70 arch/x86/entry/syscall_32.c:332 entry_SYSENTER_compat_after_hwframe+0x84/0x8e RIP: 0023:0xf7fc6f7c Code: d2 74 05 c1 e8 0c 89 02 8b 5d fc 31 c0 c9 c3 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 0f 1f 00 51 52 55 89 e5 0f 34 cd 80 <5d> 5a 59 c3 90 2e 8d b4 26 00 00 00 00 8d b4 26 00 00 00 00 58 b8 RSP: 002b:00000000f548650c EFLAGS: 00000292 ORIG_RAX: 0000000000000092 RAX: ffffffffffffffda RBX: 0000000000000006 RCX: 0000000080000840 RDX: 0000000000000002 RSI: 0000000000000000 RDI: 0000000000000000 RBP: 0000000000000000 R08: 0000000000000000 R09: 0000000000000000 R10: 0000000000000000 R11: 0000000000000292 R12: 0000000000000000 R13: 0000000000000000 R14: 0000000000000000 R15: 0000000000000000 Allocated by task 28121: 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+0xaa/0xb0 mm/kasan/common.c:415 kmalloc_noprof include/linux/slab.h:950 [inline] kzalloc_noprof include/linux/slab.h:1188 [inline] xpad_probe+0x28e/0x1f60 drivers/input/joystick/xpad.c:2058 usb_probe_interface+0x303/0x8f0 drivers/usb/core/driver.c:396 call_driver_probe drivers/base/dd.c:631 [inline] really_probe+0x241/0xa60 drivers/base/dd.c:709 __driver_probe_device+0x22e/0x480 drivers/base/dd.c:871 driver_probe_device+0x4c/0x1b0 drivers/base/dd.c:901 __device_attach_driver+0x1df/0x340 drivers/base/dd.c:1029 bus_for_each_drv+0x159/0x1e0 drivers/base/bus.c:500 __device_attach+0x1e4/0x4d0 drivers/base/dd.c:1101 device_initial_probe+0xaf/0xd0 drivers/base/dd.c:1156 bus_probe_device+0x64/0x160 drivers/base/bus.c:613 device_add+0x1210/0x1950 drivers/base/core.c:3706 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:631 [inline] really_probe+0x241/0xa60 drivers/base/dd.c:709 __driver_probe_device+0x22e/0x480 drivers/base/dd.c:871 driver_probe_device+0x4c/0x1b0 drivers/base/dd.c:901 __device_attach_driver+0x1df/0x340 drivers/base/dd.c:1029 bus_for_each_drv+0x159/0x1e0 drivers/base/bus.c:500 __device_attach+0x1e4/0x4d0 drivers/base/dd.c:1101 device_initial_probe+0xaf/0xd0 drivers/base/dd.c:1156 bus_probe_device+0x64/0x160 drivers/base/bus.c:613 device_add+0x1210/0x1950 drivers/base/core.c:3706 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+0xa0e/0x1980 kernel/workqueue.c:3314 process_scheduled_works kernel/workqueue.c:3397 [inline] worker_thread+0x5ef/0xe50 kernel/workqueue.c:3478 kthread+0x370/0x450 kernel/kthread.c:436 ret_from_fork+0x72b/0xd50 arch/x86/kernel/process.c:158 ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:245 Freed by task 23836: kasan_save_stack+0x30/0x50 mm/kasan/common.c:57 kasan_save_track+0x14/0x30 mm/kasan/common.c:78 kasan_save_free_info+0x3b/0x70 mm/kasan/generic.c:584 poison_slab_object mm/kasan/common.c:253 [inline] __kasan_slab_free+0x5f/0x80 mm/kasan/common.c:285 kasan_slab_free include/linux/kasan.h:235 [inline] slab_free_hook mm/slub.c:2689 [inline] slab_free mm/slub.c:6251 [inline] kfree+0x223/0x6c0 mm/slub.c:6566 xpad_disconnect+0x1cf/0x530 drivers/input/joystick/xpad.c:2242 usb_unbind_interface+0x1dd/0x9e0 drivers/usb/core/driver.c:458 device_remove drivers/base/dd.c:621 [inline] device_remove+0x12a/0x180 drivers/base/dd.c:613 __device_release_driver drivers/base/dd.c:1352 [inline] device_release_driver_internal+0x44e/0x620 drivers/base/dd.c:1375 bus_remove_device+0x2bc/0x560 drivers/base/bus.c:657 device_del+0x376/0x9b0 drivers/base/core.c:3895 usb_disable_device+0x367/0x810 drivers/usb/core/message.c:1478 usb_disconnect+0x2e2/0x9a0 drivers/usb/core/hub.c:2345 hub_port_connect drivers/usb/core/hub.c:5407 [inline] hub_port_connect_change drivers/usb/core/hub.c:5707 [inline] port_event drivers/usb/core/hub.c:5871 [inline] hub_event+0x1d0c/0x4af0 drivers/usb/core/hub.c:5953 process_one_work+0xa0e/0x1980 kernel/workqueue.c:3314 process_scheduled_works kernel/workqueue.c:3397 [inline] worker_thread+0x5ef/0xe50 kernel/workqueue.c:3478 kthread+0x370/0x450 kernel/kthread.c:436 ret_from_fork+0x72b/0xd50 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 ffff888029d42800 which belongs to the cache kmalloc-1k of size 1024 The buggy address is located 92 bytes inside of freed 1024-byte region [ffff888029d42800, ffff888029d42c00) The buggy address belongs to the physical page: page: refcount:0 mapcount:0 mapping:0000000000000000 index:0x0 pfn:0x29d40 head: order:3 mapcount:0 entire_mapcount:0 nr_pages_mapped:0 pincount:0 flags: 0xfff00000000040(head|node=0|zone=1|lastcpupid=0x7ff) page_type: f5(slab) raw: 00fff00000000040 ffff88801b842dc0 dead000000000100 dead000000000122 raw: 0000000000000000 0000000800100010 00000000f5000000 0000000000000000 head: 00fff00000000040 ffff88801b842dc0 dead000000000100 dead000000000122 head: 0000000000000000 0000000800100010 00000000f5000000 0000000000000000 head: 00fff00000000003 fffffffffffffe01 00000000ffffffff 00000000ffffffff head: ffffffffffffffff 0000000000000000 00000000ffffffff 0000000000000008 page dumped because: kasan: bad access detected page_owner tracks the page as allocated page last allocated via order 3, migratetype Unmovable, gfp_mask 0x252800(GFP_NOWAIT|__GFP_NORETRY|__GFP_COMP|__GFP_THISNODE), pid 28515, tgid 28511 (syz.4.5789), ts 1454484167570, free_ts 1423974877427 set_page_owner include/linux/page_owner.h:32 [inline] post_alloc_hook+0xfd/0x120 mm/page_alloc.c:1853 prep_new_page mm/page_alloc.c:1861 [inline] get_page_from_freelist+0x11a6/0x3410 mm/page_alloc.c:3941 __alloc_pages_slowpath mm/page_alloc.c:4777 [inline] __alloc_frozen_pages_noprof+0x632/0x2bc0 mm/page_alloc.c:5234 alloc_slab_page mm/slub.c:3278 [inline] allocate_slab mm/slub.c:3467 [inline] new_slab+0xa6/0x6c0 mm/slub.c:3525 ___slab_alloc+0x6d7/0x8b0 mm/slub.c:4445 __slab_alloc_node mm/slub.c:4511 [inline] slab_alloc_node mm/slub.c:4887 [inline] __kmalloc_cache_node_noprof+0x384/0x770 mm/slub.c:5428 kmalloc_node_noprof include/linux/slab.h:1077 [inline] alloc_fair_sched_group+0x216/0x430 kernel/sched/fair.c:13968 sched_create_group+0x2d/0x80 kernel/sched/core.c:9345 cpu_cgroup_css_alloc kernel/sched/core.c:9482 [inline] cpu_cgroup_css_alloc+0x15/0x30 kernel/sched/core.c:9472 css_create kernel/cgroup/cgroup.c:5773 [inline] cgroup_apply_control_enable+0x602/0xdd0 kernel/cgroup/cgroup.c:3351 cgroup_apply_control kernel/cgroup/cgroup.c:3434 [inline] cgroup_subtree_control_write+0xa9e/0xe50 kernel/cgroup/cgroup.c:3588 cgroup_file_write+0x1e6/0x8a0 kernel/cgroup/cgroup.c:4281 kernfs_fop_write_iter+0x3e0/0x5f0 fs/kernfs/file.c:352 new_sync_write fs/read_write.c:595 [inline] vfs_write+0x6ac/0x1070 fs/read_write.c:688 ksys_write+0x12a/0x250 fs/read_write.c:740 do_syscall_32_irqs_on arch/x86/entry/syscall_32.c:83 [inline] __do_fast_syscall_32+0xe7/0x970 arch/x86/entry/syscall_32.c:307 page last free pid 28043 tgid 28043 stack trace: reset_page_owner include/linux/page_owner.h:25 [inline] __free_pages_prepare mm/page_alloc.c:1397 [inline] __free_frozen_pages+0x794/0x10a0 mm/page_alloc.c:2938 qlink_free mm/kasan/quarantine.c:163 [inline] qlist_free_all+0x47/0xf0 mm/kasan/quarantine.c:179 kasan_quarantine_reduce+0x1a0/0x1f0 mm/kasan/quarantine.c:286 __kasan_slab_alloc+0x69/0x90 mm/kasan/common.c:350 kasan_slab_alloc include/linux/kasan.h:253 [inline] slab_post_alloc_hook mm/slub.c:4570 [inline] slab_alloc_node mm/slub.c:4899 [inline] __kmalloc_cache_noprof+0x243/0x6f0 mm/slub.c:5415 kmalloc_noprof include/linux/slab.h:950 [inline] kzalloc_noprof include/linux/slab.h:1188 [inline] ref_tracker_alloc+0x190/0x590 lib/ref_tracker.c:270 __netdev_tracker_alloc include/linux/netdevice.h:4471 [inline] netdev_tracker_alloc include/linux/netdevice.h:4483 [inline] netdev_get_by_index+0x7c/0xb0 net/core/dev.c:1027 fib6_nh_init+0x657/0x1d80 net/ipv6/route.c:3613 ip6_route_info_create_nh+0x50b/0xfe0 net/ipv6/route.c:3912 ip6_route_add+0x80/0x1d0 net/ipv6/route.c:3964 addrconf_add_mroute+0x1de/0x350 net/ipv6/addrconf.c:2552 addrconf_add_dev+0x14e/0x1a0 net/ipv6/addrconf.c:2570 inet6_addr_add+0xfc/0x9a0 net/ipv6/addrconf.c:3032 inet6_rtm_newaddr+0x1475/0x1bb0 net/ipv6/addrconf.c:5071 rtnetlink_rcv_msg+0x95e/0xe90 net/core/rtnetlink.c:6997 netlink_rcv_skb+0x159/0x420 net/netlink/af_netlink.c:2555 Memory state around the buggy address: ffff888029d42700: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc ffff888029d42780: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc >ffff888029d42800: fa fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb ^ ffff888029d42880: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb ffff888029d42900: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb ================================================================== ---------------- Code disassembly (best guess), 1 bytes skipped: 0: 0a 00 or (%rax),%al 2: 00 41 c7 add %al,-0x39(%rcx) 5: 87 e0 xchg %esp,%eax 7: 0d 00 00 00 00 or $0x0,%eax c: 00 00 add %al,(%rax) e: e9 0f 04 00 00 jmp 0x422 13: 49 8d 7f 48 lea 0x48(%r15),%rdi 17: e8 1a 03 b5 09 call 0x9b50336 1c: e8 35 81 3b 00 call 0x3b8156 21: fb sti 22: 48 8d bb c8 16 00 00 lea 0x16c8(%rbx),%rdi * 29: 48 b8 00 00 00 00 00 movabs $0xdffffc0000000000,%rax <-- trapping instruction 30: fc ff df 33: 48 89 fa mov %rdi,%rdx 36: 48 c1 ea 03 shr $0x3,%rdx 3a: 0f b6 04 02 movzbl (%rdx,%rax,1),%eax 3e: 84 .byte 0x84