cdc-phonet: Don't leak in usbpn_open
authorJesper Juhl <jj@chaosbits.net>
Tue, 7 Aug 2012 11:56:26 +0000 (11:56 +0000)
committerDavid S. Miller <davem@davemloft.net>
Wed, 8 Aug 2012 23:04:47 +0000 (16:04 -0700)
commit47dffc7547ed3b105dabd570ed864347687beac2
tree92cedaf0ddd3ea1e6d7c18dae57f3f268852cf42
parent155e4e12b9f49c2dc817bb4c44e9416c46833c3d
cdc-phonet: Don't leak in usbpn_open

We allocate memory for 'req' with usb_alloc_urb() and then test
'if (!req || rx_submit(pnd, req, GFP_KERNEL | __GFP_COLD))'.
If we enter that branch due to '!req' then there is no problem. But if
we enter the branch due to 'req' being != 0 and the 'rx_submit()' call
being false, then we'll leak the memory we allocated.
Deal with the leak by always calling 'usb_free_urb(req)' when entering
the branch. If 'req' happens to be 0 then the call is harmless, if it
is not 0 then we free the memory we allocated but don't need.

Signed-off-by: Jesper Juhl <jj@chaosbits.net>
Acked-by: RĂ©mi Denis-Courmont <remi@remlab.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/usb/cdc-phonet.c