Re: KASAN: invalid-free in disconnect_rio

From: Oliver Neukum
Date: Tue Apr 30 2019 - 09:49:27 EST


On Di, 2019-04-30 at 15:02 +0200, Andrey Konovalov wrote:
> On Tue, Apr 30, 2019 at 2:58 PM Oliver Neukum <oneukum@xxxxxxxx> wrote:
> >
> > On Fr, 2019-04-12 at 04:36 -0700, syzbot wrote:
> > > Hello,
> > >
> > > syzbot found the following crash on:
> > >
> > > HEAD commit: 9a33b369 usb-fuzzer: main usb gadget fuzzer driver
> > > git tree: https://github.com/google/kasan/tree/usb-fuzzer
> > > console output: https://syzkaller.appspot.com/x/log.txt?x=174ce2e3200000
> > > kernel config: https://syzkaller.appspot.com/x/.config?x=23e37f59d94ddd15
> > > dashboard link: https://syzkaller.appspot.com/bug?extid=35f04d136fc975a70da4
> > > compiler: gcc (GCC) 9.0.0 20181231 (experimental)
> > > syz repro: https://syzkaller.appspot.com/x/repro.syz?x=138150f3200000
> > > C reproducer: https://syzkaller.appspot.com/x/repro.c?x=1290c22d200000
> > >
> > > IMPORTANT: if you fix the bug, please add the following tag to the commit:
> > > Reported-by: syzbot+35f04d136fc975a70da4@xxxxxxxxxxxxxxxxxxxxxxxxx
> > >
> > > usb 6-1: USB disconnect, device number 2
> > > rio500 3-1:0.110: USB Rio disconnected.
> > > usb 4-1: USB disconnect, device number 2
> > > ==================================================================
> > > usb 1-1: USB disconnect, device number 2
> > > BUG: KASAN: double-free or invalid-free in slab_free mm/slub.c:3003 [inline]
> > > BUG: KASAN: double-free or invalid-free in kfree+0xce/0x290 mm/slub.c:3958
> > > usb 2-1: USB disconnect, device number 2
> > >
> >
> > Try as I might, I don't understand this. I can see a memory leak,
> > but not a double free.
>
> I took a look at this some time ago, and I was under the impression
> that this driver doesn't handle multiple devices being connected at
> the same time well.


You are right. A global variable is used. A fix is being worked on.

Regards
Oliver