Thread (5 messages) 5 messages, 4 authors, 2013-10-10

Re: [PATCH] carl9170: fix leaks at failure path in carl9170_usb_probe()

From: Christian Lamparter <chunkeey@googlemail.com>
Date: 2013-10-10 18:17:20
Also in: linux-wireless, lkml

On Thursday, October 10, 2013 01:59:52 PM John W. Linville wrote:
On Sat, Sep 28, 2013 at 01:16:20AM -0400, Alexey Khoroshilov wrote:
quoted
On 28.09.2013 00:17, Fabio Estevam wrote:
quoted
On Sat, Sep 28, 2013 at 12:51 AM, Alexey Khoroshilov
[off-list ref] wrote:
quoted
-       return request_firmware_nowait(THIS_MODULE, 1, CARL9170FW_NAME,
+       err = request_firmware_nowait(THIS_MODULE, 1, CARL9170FW_NAME,
                &ar->udev->dev, GFP_KERNEL, ar, carl9170_usb_firmware_step2);
+       if (err) {
+               usb_put_dev(udev);
+               usb_put_dev(udev);
You are doing the same free twice.
Yes, because it was get twice.
quoted
I guess you meant to also free: usb_put_dev(ar->udev)
udev and ar->udev are equal, so technically the patch is correct.

I agree that there is some inconsistency, but I would prefer to fix
it at usb_get_dev() side with a comment about reasons for the double
get.
What is the reason for the double get?
The idea is:
One (extra) reference protects the asynchronous firmware loader callback
from disappearing "udev".

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