usb: dwc_otg hcd driver: fix a race condition
authorlyz <lyz@rock-chips.com>
Thu, 19 Jun 2014 03:42:25 +0000 (11:42 +0800)
committerlyz <lyz@rock-chips.com>
Thu, 19 Jun 2014 03:53:01 +0000 (11:53 +0800)
commit036f439338d3e8285786c977a56b9a7cf3226965
tree00b8651d764cfc2878fc43081dc5e8bb7b51a423
parent1e51b0ee15b9ab33137e1e942e86eb0a63b79cf5
usb: dwc_otg hcd driver: fix a race condition

When pannic occurs,
PC is at dwc_otg_hcd_urb_enqueue+0x118/0x184
LR is at dwc_otg_hcd_urb_enqueue+0xf4/0x184
There may be more than one threads running function
dwc_otg_hcd_urb_enqueue().So we should use a spinlock to protect the
dwc_otg_qh_t struct against a use-after-free bug.
drivers/usb/dwc_otg_310/dwc_otg_hcd.c
drivers/usb/dwc_otg_310/dwc_otg_hcd_queue.c