|
@@ -683,10 +683,13 @@ EXPORT_SYMBOL_GPL(usb_kill_urb);
|
|
void usb_poison_urb(struct urb *urb)
|
|
void usb_poison_urb(struct urb *urb)
|
|
{
|
|
{
|
|
might_sleep();
|
|
might_sleep();
|
|
- if (!(urb && urb->dev && urb->ep))
|
|
|
|
|
|
+ if (!urb)
|
|
return;
|
|
return;
|
|
atomic_inc(&urb->reject);
|
|
atomic_inc(&urb->reject);
|
|
|
|
|
|
|
|
+ if (!urb->dev || !urb->ep)
|
|
|
|
+ return;
|
|
|
|
+
|
|
usb_hcd_unlink_urb(urb, -ENOENT);
|
|
usb_hcd_unlink_urb(urb, -ENOENT);
|
|
wait_event(usb_kill_urb_queue, atomic_read(&urb->use_count) == 0);
|
|
wait_event(usb_kill_urb_queue, atomic_read(&urb->use_count) == 0);
|
|
}
|
|
}
|