usb: musb: host: fix for musb_start_urb Oops
authoryuzheng ma <myz147@gmail.com>
Wed, 15 Aug 2012 08:11:40 +0000 (16:11 +0800)
committerFelipe Balbi <balbi@ti.com>
Thu, 6 Sep 2012 16:52:26 +0000 (19:52 +0300)
commit3067779b1566ae5fb6af40f03ae874ac47035523
tree3de04dd718271471313e05354eac4febdf476888
parent3b9c1c5ba7a95caae8440ea47308496b14f7301a
usb: musb: host: fix for musb_start_urb Oops

when using musb_urb_enqueue to submit three urbs to the same endpoint, when
hep->hcpriv is NULL, qh will be allocated when the first urb is completed.

When the IRQ completes the next two urbs, qh->hep->hcpriv will be set to NULL.
Now the second urb get musb->lock and executes musb_schedule(), but
next_urb(qh) is NULL, so musb_start_urb will Oops.

[ balbi@ti.com : practically rewrote commit log so it makes sense ]

Signed-off-by: mayuzheng <myz147@gmail.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
drivers/usb/musb/musb_host.c