From 11b1bf81bf68cab0ad7d7d4d08dbfb236d5cbcaa Mon Sep 17 00:00:00 2001 From: Thomas Pugliese Date: Thu, 15 Aug 2013 14:37:41 -0500 Subject: USB: WUSBCORE: fix resource cleanup in error path in __wa_xfer_setup_segs Use usb_free_urb instead of kfree in error path and point to the correct URB. Also remember to clean up the sg list for the URB if it was allocated. Signed-off-by: Thomas Pugliese Signed-off-by: Greg Kroah-Hartman --- drivers/usb/wusbcore/wa-xfer.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'drivers/usb/wusbcore') diff --git a/drivers/usb/wusbcore/wa-xfer.c b/drivers/usb/wusbcore/wa-xfer.c index d74fe1ae16ac..75a2bea62102 100644 --- a/drivers/usb/wusbcore/wa-xfer.c +++ b/drivers/usb/wusbcore/wa-xfer.c @@ -804,15 +804,17 @@ static int __wa_xfer_setup_segs(struct wa_xfer *xfer, size_t xfer_hdr_size) return 0; error_sg_alloc: - kfree(seg->dto_urb); + usb_free_urb(xfer->seg[cnt]->dto_urb); error_dto_alloc: kfree(xfer->seg[cnt]); cnt--; error_seg_kzalloc: /* use the fact that cnt is left at were it failed */ for (; cnt >= 0; cnt--) { - if (xfer->seg[cnt] && xfer->is_inbound == 0) + if (xfer->seg[cnt] && xfer->is_inbound == 0) { usb_free_urb(xfer->seg[cnt]->dto_urb); + kfree(xfer->seg[cnt]->dto_urb->sg); + } kfree(xfer->seg[cnt]); } error_segs_kzalloc: -- cgit v1.2.2