usb: renesas_usbhs: mod_host: fixup usbhsh_ureq_free() timing
usbhsh_ureq_free() free ureq which includes ubshs_pkt. But current driver used usbhs_pkt after freed ureq. This patch fixup this bug. Special thanks to Chen Reported-by: Chen Gang <gang.chen@asianux.com> Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Signed-off-by: Felipe Balbi <balbi@ti.com>
This commit is contained in:
Родитель
d9fa298f21
Коммит
e0b64ce6fe
|
@ -661,9 +661,10 @@ static void usbhsh_queue_done(struct usbhs_priv *priv, struct usbhs_pkt *pkt)
|
||||||
status = -ESHUTDOWN;
|
status = -ESHUTDOWN;
|
||||||
|
|
||||||
urb->actual_length = pkt->actual;
|
urb->actual_length = pkt->actual;
|
||||||
usbhsh_ureq_free(hpriv, ureq);
|
|
||||||
|
|
||||||
usbhsh_endpoint_sequence_save(hpriv, urb, pkt);
|
usbhsh_endpoint_sequence_save(hpriv, urb, pkt);
|
||||||
|
usbhsh_ureq_free(hpriv, ureq);
|
||||||
|
|
||||||
usbhsh_pipe_detach(hpriv, usbhsh_ep_to_uep(urb->ep));
|
usbhsh_pipe_detach(hpriv, usbhsh_ep_to_uep(urb->ep));
|
||||||
|
|
||||||
usb_hcd_unlink_urb_from_ep(hcd, urb);
|
usb_hcd_unlink_urb_from_ep(hcd, urb);
|
||||||
|
|
Загрузка…
Ссылка в новой задаче