--- a/drivers/usb/core/hcd.c +++ b/drivers/usb/core/hcd.c @@ -1652,6 +1652,7 @@ static void __usb_hcd_giveback_urb(struc usb_anchor_resume_wakeups(anchor); atomic_dec(&urb->use_count); + smp_mb__after_atomic(); if (unlikely(atomic_read(&urb->reject))) wake_up(&usb_kill_urb_queue); usb_put_urb(urb);