diff options
-rw-r--r-- | drivers/usb/core/urb.c | 3 | ||||
-rw-r--r-- | include/linux/usb.h | 1 |
2 files changed, 4 insertions, 0 deletions
diff --git a/drivers/usb/core/urb.c b/drivers/usb/core/urb.c index ac4273dddf3..52ec44b828f 100644 --- a/drivers/usb/core/urb.c +++ b/drivers/usb/core/urb.c @@ -13,6 +13,9 @@ static void urb_destroy(struct kref *kref) { struct urb *urb = to_urb(kref); + if (urb->transfer_flags & URB_FREE_BUFFER) + kfree(urb->transfer_buffer); + kfree(urb); } diff --git a/include/linux/usb.h b/include/linux/usb.h index efce9a4c511..533c32374e0 100644 --- a/include/linux/usb.h +++ b/include/linux/usb.h @@ -994,6 +994,7 @@ extern int usb_disabled(void); #define URB_ZERO_PACKET 0x0040 /* Finish bulk OUT with short packet */ #define URB_NO_INTERRUPT 0x0080 /* HINT: no non-error interrupt * needed */ +#define URB_FREE_BUFFER 0x0100 /* Free transfer buffer with the URB */ struct usb_iso_packet_descriptor { unsigned int offset; |