aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/usb/wusbcore/wa-xfer.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/drivers/usb/wusbcore/wa-xfer.c b/drivers/usb/wusbcore/wa-xfer.c
index 47cbfddad159..d2c7b2bb17c1 100644
--- a/drivers/usb/wusbcore/wa-xfer.c
+++ b/drivers/usb/wusbcore/wa-xfer.c
@@ -178,9 +178,15 @@ static void wa_xfer_destroy(struct kref *_xfer)
if (xfer->seg) {
unsigned cnt;
for (cnt = 0; cnt < xfer->segs; cnt++) {
- usb_free_urb(xfer->seg[cnt]->dto_urb);
- usb_free_urb(&xfer->seg[cnt]->tr_urb);
+ if (xfer->seg[cnt]) {
+ if (xfer->seg[cnt]->dto_urb) {
+ kfree(xfer->seg[cnt]->dto_urb->sg);
+ usb_free_urb(xfer->seg[cnt]->dto_urb);
+ }
+ usb_free_urb(&xfer->seg[cnt]->tr_urb);
+ }
}
+ kfree(xfer->seg);
}
kfree(xfer);
}