diff --git a/drivers/usb/core/urb.c b/drivers/usb/core/urb.c index 33d62d7e3929..666626580a9b 100644 --- a/drivers/usb/core/urb.c +++ b/drivers/usb/core/urb.c @@ -12,6 +12,7 @@ #include #include #include +#include #define to_urb(d) container_of(d, struct urb, kref) @@ -1019,6 +1020,7 @@ void usb_scuttle_anchored_urbs(struct usb_anchor *anchor) { struct urb *victim; unsigned long flags; + struct sk_buff *skb; int surely_empty; do { @@ -1026,6 +1028,9 @@ void usb_scuttle_anchored_urbs(struct usb_anchor *anchor) while (!list_empty(&anchor->urb_list)) { victim = list_entry(anchor->urb_list.prev, struct urb, anchor_list); + skb = victim->context; + if (skb) + dev_kfree_skb_any(skb); __usb_unanchor_urb(victim, anchor); } surely_empty = usb_anchor_check_wakeup(anchor);