Re: KASAN: use-after-free Read in __usb_hcd_giveback_urb
From: Alan Stern
Date: Fri Aug 07 2020 - 10:22:08 EST
On Fri, Aug 07, 2020 at 12:07:16AM -0700, syzbot wrote:
> Hello,
>
> syzbot found the following issue on:
>
> HEAD commit: fffe3ae0 Merge tag 'for-linus-hmm' of git://git.kernel.org..
> git tree: upstream
> console output: https://syzkaller.appspot.com/x/log.txt?x=12b22fda900000
> kernel config: https://syzkaller.appspot.com/x/.config?x=226c7a97d80bec54
> dashboard link: https://syzkaller.appspot.com/bug?extid=bb9cb5f2cd814f87212a
> compiler: clang version 10.0.0 (https://github.com/llvm/llvm-project/ c2443155a0fb245c8f17f2c1c72b6ea391e86e81)
>
> Unfortunately, I don't have any reproducer for this issue yet.
>
> IMPORTANT: if you fix the issue, please add the following tag to the commit:
> Reported-by: syzbot+bb9cb5f2cd814f87212a@xxxxxxxxxxxxxxxxxxxxxxxxx
>
> xpad 3-1:0.65: xpad_irq_in - usb_submit_urb failed with result -19
> xpad 3-1:0.65: xpad_irq_out - usb_submit_urb failed with result -19
> ==================================================================
> BUG: KASAN: use-after-free in register_lock_class+0x12a8/0x1520 kernel/locking/lockdep.c:1250
> Read of size 2 at addr ffff8880a1f5c092 by task systemd-udevd/1571
>
> CPU: 0 PID: 1571 Comm: systemd-udevd Not tainted 5.8.0-syzkaller #0
> Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
> Call Trace:
> <IRQ>
> __dump_stack lib/dump_stack.c:77 [inline]
> dump_stack+0x1f0/0x31e lib/dump_stack.c:118
> print_address_description+0x66/0x5a0 mm/kasan/report.c:383
> __kasan_report mm/kasan/report.c:513 [inline]
> kasan_report+0x132/0x1d0 mm/kasan/report.c:530
> register_lock_class+0x12a8/0x1520 kernel/locking/lockdep.c:1250
> __lock_acquire+0xfa/0x2ab0 kernel/locking/lockdep.c:4305
> lock_acquire+0x160/0x730 kernel/locking/lockdep.c:5005
> __raw_spin_lock_irqsave include/linux/spinlock_api_smp.h:110 [inline]
> _raw_spin_lock_irqsave+0x9e/0xc0 kernel/locking/spinlock.c:159
> __wake_up_common_lock kernel/sched/wait.c:122 [inline]
> __wake_up+0xb8/0x150 kernel/sched/wait.c:142
> __usb_hcd_giveback_urb+0x340/0x4b0 drivers/usb/core/hcd.c:1653
It looks like xpad_disconnect() fails to call xpad_stop_input() if the
hardware isn't an Xbox 360W.
Alan Stern