Thread (8 messages) flat view 8 messages, 4 authors, 2018-07-15

Re: [PATCH] Input: pxrc - fix leak of usb_device

From: Alexey Khoroshilov <hidden>
Date: 2018-07-15 19:58:51
Also in: lkml

Dear Marcus,

On 15.07.2018 10:42, Marcus Folkesson wrote:
On Sat, Jul 14, 2018 at 08:51:09AM +0000, Dmitry Torokhov wrote:
quoted
On Sat, Jul 14, 2018 at 10:09:20AM +0200, Marcus Folkesson wrote:
quoted
Hi Alexey,

Good catch!

On Fri, Jul 13, 2018 at 11:07:57PM +0300, Alexey Khoroshilov wrote:
quoted
pxrc_probe() calls usb_get_dev(), but there is no usb_put_dev()
anywhere in the driver.

The patch adds one to error handling code and to pxrc_isconnect().

Found by Linux Driver Verification project (linuxtesting.org).

Signed-off-by: Alexey Khoroshilov <redacted>
Reviewed-by: Marcus Folkesson <marcus.folkesson@gmail.com>
Hmm, the biggest question however if we need to "take" the device, as I
do not think interface can outlive the device, and whether we actually
need to store it in pxrc, as we only need it during set up, as far as I
can see.
Yep, the device is only used during setup.
I interpret the comments for usb_get_dev() as you should take a
reference count on the device even if you only use the interface, but I
could be wrong.
quoted
From usb_get_dev()::
	 * usb_get_dev - increments the reference count of the usb device structure
	 * @dev: the device being referenced
	 *
	 * Each live reference to a device should be refcounted.
	 *
	 * Drivers for USB interfaces should normally record such references in
	 * their probe() methods, when they bind to an interface, and release
	 * them by calling usb_put_dev(), in their disconnect() methods.

I can fix the driver to not take the device if that is what we want.
If not Alexey want to fix it of course, it is his catch :-)
As far as I can see the proposed solution requires some refactoring of
the init code. So, I believe the author is in the better position to do
that.

Best regards,
Alexey
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help