All of lore.kernel.org
 help / color / mirror / Atom feed
* [BUG REPORT] usb: usb-skeleton: Race condition between skel_open and skel_disconnect
@ 2021-05-17 14:31 Bui Quang Minh
  2021-05-24 18:50 ` Dmitry Torokhov
  0 siblings, 1 reply; 2+ messages in thread
From: Bui Quang Minh @ 2021-05-17 14:31 UTC (permalink / raw)
  To: Greg Kroah-Hartman; +Cc: linux-usb

Hi,

I spotted this bug through code review and I don't know how to make a 
Proof of Concept for this bug so maybe I'm wrong.

Between skel_open() and skel_disconnect(), this scenario can happen

skel_open()			skel_disconnect()
dev = usb_get_intfdata(interface);
				usb_set_intfdata(interface, NULL);
				kref_put(&dev->kref, skel_delete);
kref_get(&dev->kref);

In case dev's refcount is 1 before these events, kref_put() in 
skel_disconnect() will call the skel_delete to free dev. As a result, a 
UAF will happen when we try to access dev->kref in skel_open(). I can 
see this pattern in other USB drivers as well such as usblcd.c, yurex.c, ...

Please correct me if I am wrong.

Thank you,
Quang Minh.

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2021-05-24 18:50 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-05-17 14:31 [BUG REPORT] usb: usb-skeleton: Race condition between skel_open and skel_disconnect Bui Quang Minh
2021-05-24 18:50 ` Dmitry Torokhov

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.