usb: renesas_usbhs: gadget: fix NULL pointer dereference in ep_disable()
PATCH 1/4 usb: renesas_usbhs: gadget: fix NULL pointer dereference in ep_disable()
This patch fixes an issue that the NULL pointer dereference happens when we use g_audio driver. Since the g_audio driver will call usb_ep_disable() in afunc_set_alt() before it calls usb_ep_enable(), the uep->pipe of renesas usbhs driver will be NULL. So, this patch adds a condition to avoid the oops.
--- drivers/usb/renesas_usbhs/mod_gadget.c | 3 +++ 1 file changed, 3 insertions(+)
drivers/usb/renesas_usbhs/mod_gadget.c +3 -0
@@ -602,6 +602,9 @@ static int usbhsg_ep_disable(struct usb_ep *ep)struct usbhsg_uep *uep =usbhsg_ep_to_uep (ep);struct usbhs_pipe *pipe =usbhsg_uep_to_pipe (uep); +if (!uep || !uep->pipe) +return -EINVAL ; +usbhsg_pipe_disable (uep);usbhs_pipe_free (pipe);
Signature · 1 line
1.7.9.5
Quoted 9 lines · Yoshihiro Shimoda
This patch fixes an issue that the NULL pointer dereference happens when we use
g_audiodriver. Since theg_audiodriver will callusb_ep_disable()inafunc_set_alt()before it callsusb_ep_enable(), theuep->pipeof renesas usbhs driver will be NULL. So, this patch adds a condition to avoid the oops.Signed-off-by Kazuya Mizuguchi <[email protected]>Signed-off-by Takeshi Kihara <[email protected]>Signed-off-by Yoshihiro Shimoda <[email protected]>
Which commit does this fix ? Do we need a Cc: stable ?
Signature · 1 line
balbi
Hi Shimoda-san
drivers/usb/renesas_usbhs/mod_gadget.c static int usbhsg_ep_disable(struct usb_ep *ep) · line 609
Quoted 11 lines
drivers/usb/renesas_usbhs/mod_gadget.c +3
-0@@ -602,6 +602,9 @@ static int usbhsg_ep_disable(struct usb_ep *ep)struct usbhsg_uep *uep =usbhsg_ep_to_uep (ep);struct usbhs_pipe *pipe =usbhsg_uep_to_pipe (uep); +if (!uep || !uep->pipe) +return -EINVAL ; +usbhsg_pipe_disable (uep);usbhs_pipe_free (pipe);
If uep can be NULL,
we need care about usbhsg_uep_to_pipe(uep) too.
and, "uep->pipe" is same as "pipe" ?
Best regards
---
Kuninori Morimoto
Hi,
Quoted 7 lines · Felipe Balbi
Quoted 6 lines · Yoshihiro Shimoda
This patch fixes an issue that the NULL pointer dereference happens when we use
g_audiodriver. Since theg_audiodriver will callusb_ep_disable()inafunc_set_alt()before it callsusb_ep_enable(), theuep->pipeof renesas usbhs driver will be NULL. So, this patch adds a condition to avoid the oops.
Quoted 6 lines
Quoted 3 lines
Signed-off-by Kazuya Mizuguchi <[email protected]>Signed-off-by Takeshi Kihara <[email protected]>Signed-off-by Yoshihiro Shimoda <[email protected]>Which commit does this fix ? Do we need a Cc: stable ?
I think we need a Cc: stable in this patch because the previous code causes the oops.
Best regards,
Yoshihiro Shimoda
Hi Morimoto-san,
Quoted 9 lines · Kuninori Morimoto
Hi Shimoda-san
Quoted 6 lines
drivers/usb/renesas_usbhs/mod_gadget.c +0
-0@@ -602,6 +602,9 @@ static int usbhsg_ep_disable(struct usb_ep *ep)struct usbhsg_uep *uep =usbhsg_ep_to_uep (ep);struct usbhs_pipe *pipe =usbhsg_uep_to_pipe (uep);
Quoted 8 lines
drivers/usb/renesas_usbhs/mod_gadget.c static int usbhsg_ep_disable(struct usb_ep *ep) · line 609
Quoted 5 lines
drivers/usb/renesas_usbhs/mod_gadget.c +3
-0+if (!uep || !uep->pipe) +return -EINVAL ; +usbhsg_pipe_disable (uep);usbhs_pipe_free (pipe);If uep can be NULL,
we need care aboutusbhsg_uep_to_pipe(uep)too.
Thank you for the point.
I will check the uep can be NULL or not.
Quoted 1 line
and, "
uep->pipe" is same as "pipe" ?
Yes. I will use "pipe" instead of "uep->pipe".
Best regards,
Yoshihiro Shimoda
Quoted 4 lines
Best regards
---
Kuninori Morimoto