From: Oliver Neukum <redacted>
Date: Fri, 26 Oct 2012 09:39:16 +0200
On Thursday 25 October 2012 21:17:54 Hemant Kumar wrote:
quoted
Driver anchors the tx urbs and defers the urb submission if
a transmit request comes when the interface is suspended.
Anchoring urb increments the urb reference count. These
deferred urbs are later accessed by calling usb_get_from_anchor()
for submission during interface resume. usb_get_from_anchor()
unanchors the urb but urb reference count remains same.
This causes the urb reference count to remain non-zero
after usb_free_urb() gets called and urb never gets freed.
Hence call usb_put_urb() after anchoring the urb to properly
balance the reference count for these deferred urbs. Also,
unanchor these deferred urbs during disconnect, to free them
up.
Good catch. This needs to go into stable, too.
quoted
Signed-off-by: Hemant Kumar <redacted>
Acked-by: Oliver Neukum <redacted>
Applied and queued up for -stable.