From: Oliver Neukum <oneukum@suse.com>
To: Pete Zaitcev <zaitcev@redhat.com>, Hillf Danton <hdanton@sina.com>
Cc: syzbot <syzbot+be5b5f86a162a6c281e6@syzkaller.appspotmail.com>,
andreyknvl@google.com, gregkh@linuxfoundation.org,
linux-kernel@vger.kernel.org, linux-usb@vger.kernel.org,
syzkaller-bugs@googlegroups.com
Subject: Re: KASAN: use-after-free Read in usblp_bulk_read
Date: Thu, 23 Apr 2020 13:13:33 +0200 [thread overview]
Message-ID: <1587640413.23108.7.camel@suse.com> (raw)
In-Reply-To: <20200423001036.41324bd4@suzdal.zaitcev.lan>
Am Donnerstag, den 23.04.2020, 00:10 -0500 schrieb Pete Zaitcev:
>
> I do not agree with this kind of workaround. The model we're following
> is for usb_kill_urb() to cancel the transfer. The usblp invokes it
> through usb_kill_anchored_urbs() and usblp_unlink_urbs(), as seen
> above. There can be no timer hitting anything once it returns.
Right. It seems to me that the problem is not killing an existing
transfer but a failure to check in case of new transfers whether
the device has been disconnected.
> 1104 is kzalloc for struct usblp.
>
> > > Freed by task 12266:
> > > save_stack+0x1b/0x80 mm/kasan/common.c:72
> > > set_track mm/kasan/common.c:80 [inline]
> > > kasan_set_free_info mm/kasan/common.c:337 [inline]
> > > __kasan_slab_free+0x117/0x160 mm/kasan/common.c:476
> > > slab_free_hook mm/slub.c:1444 [inline]
> > > slab_free_freelist_hook mm/slub.c:1477 [inline]
> > > slab_free mm/slub.c:3034 [inline]
> > > kfree+0xd5/0x300 mm/slub.c:3995
> > > usblp_disconnect.cold+0x24/0x29 drivers/usb/class/usblp.c:1380
> > > usb_unbind_interface+0x1bd/0x8a0 drivers/usb/core/driver.c:436
> > > __device_release_driver drivers/base/dd.c:1137 [inline]
> > > device_release_driver_internal+0x42f/0x500 drivers/base/dd.c:1168
> > > bus_remove_device+0x2eb/0x5a0 drivers/base/bus.c:533
>
> 1380 is an inlined call to usblp_cleanup, which is just
> a bunch of kfree.
But that must never happen while while the device is open.
If that ever happens something is wrong with usblp->used.
> The bug report is still a bug report, but I'm pretty sure the
> culprit is the emulated HCD and/or the gadget layer. Unfortunately,
> I'm not up to speed in that subsystem. Maybe Alan can look at it?
I doubt it. Operation by a timer triggering a timeout must work.
Regards
Oliver
next prev parent reply other threads:[~2020-04-23 11:13 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-04-21 15:35 KASAN: use-after-free Read in usblp_bulk_read syzbot
[not found] ` <20200422032323.8536-1-hdanton@sina.com>
2020-04-23 5:10 ` Pete Zaitcev
2020-04-23 11:13 ` Oliver Neukum [this message]
2020-04-23 16:29 ` Alan Stern
2020-04-25 17:31 ` Oliver Neukum
2020-04-25 18:12 ` Alan Stern
2020-04-30 9:18 ` Oliver Neukum
2020-04-30 15:11 ` Alan Stern
2020-05-06 9:14 ` Oliver Neukum
2020-05-06 14:08 ` Alan Stern
2020-05-06 16:47 ` Pete Zaitcev
2020-05-06 20:09 ` Alan Stern
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1587640413.23108.7.camel@suse.com \
--to=oneukum@suse.com \
--cc=andreyknvl@google.com \
--cc=gregkh@linuxfoundation.org \
--cc=hdanton@sina.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=syzbot+be5b5f86a162a6c281e6@syzkaller.appspotmail.com \
--cc=syzkaller-bugs@googlegroups.com \
--cc=zaitcev@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.