Message ID | 20191204053322.35776-1-ejh@nvidia.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | [v2] usb: gadget: fix wrong endpoint desc | expand |
On 19-12-03 21:33:22, EJ Hsu wrote: > Gadget driver should always use config_ep_by_speed() to initialize > usb_ep struct according to usb device's operating speed. Otherwise, > usb_ep struct may be wrong if usb devcie's operating speed is changed. > > The key point in this patch is that we want to make sure the descpointer Typo Otherwise: Reviewed-by: Peter Chen <peter.chen@nxp.com> > in usb_ep struct will be set to NULL when gadget is disconnected. > This will force it to call config_ep_by_speed() to correctly initialize > usb_ep struct based on the new operating speed when gadget is > re-connected later. > > Signed-off-by: EJ Hsu <ejh@nvidia.com> > --- > v2: fix the coding style > --- > drivers/usb/gadget/function/f_ecm.c | 6 +++++- > drivers/usb/gadget/function/f_rndis.c | 1 + > 2 files changed, 6 insertions(+), 1 deletion(-) > > diff --git a/drivers/usb/gadget/function/f_ecm.c b/drivers/usb/gadget/function/f_ecm.c > index 6ce044008cf6..460d5d7c984f 100644 > --- a/drivers/usb/gadget/function/f_ecm.c > +++ b/drivers/usb/gadget/function/f_ecm.c > @@ -621,8 +621,12 @@ static void ecm_disable(struct usb_function *f) > > DBG(cdev, "ecm deactivated\n"); > > - if (ecm->port.in_ep->enabled) > + if (ecm->port.in_ep->enabled) { > gether_disconnect(&ecm->port); > + } else { > + ecm->port.in_ep->desc = NULL; > + ecm->port.out_ep->desc = NULL; > + } > > usb_ep_disable(ecm->notify); > ecm->notify->desc = NULL; > diff --git a/drivers/usb/gadget/function/f_rndis.c b/drivers/usb/gadget/function/f_rndis.c > index d48df36622b7..0d8e4a364ca6 100644 > --- a/drivers/usb/gadget/function/f_rndis.c > +++ b/drivers/usb/gadget/function/f_rndis.c > @@ -618,6 +618,7 @@ static void rndis_disable(struct usb_function *f) > gether_disconnect(&rndis->port); > > usb_ep_disable(rndis->notify); > + rndis->notify->desc = NULL; > } > > /*-------------------------------------------------------------------------*/ > -- > 2.17.1 >
Hi Peter, Peter Chen wrote: > On 19-12-03 21:33:22, EJ Hsu wrote: > > Gadget driver should always use config_ep_by_speed() to initialize > > usb_ep struct according to usb device's operating speed. Otherwise, > > usb_ep struct may be wrong if usb devcie's operating speed is changed. > > > > The key point in this patch is that we want to make sure the > > descpointer > > Typo > > Otherwise: > Reviewed-by: Peter Chen <peter.chen@nxp.com> > I have uploaded a new patch following your feedback. Could you please help to review it again? Thanks, EJ ----------------------------------------------------------------------------------- This email message is for the sole use of the intended recipient(s) and may contain confidential information. Any unauthorized review, use, disclosure or distribution is prohibited. If you are not the intended recipient, please contact the sender by reply email and destroy all copies of the original message. -----------------------------------------------------------------------------------
> > Peter Chen wrote: > > On 19-12-03 21:33:22, EJ Hsu wrote: > > > Gadget driver should always use config_ep_by_speed() to initialize > > > usb_ep struct according to usb device's operating speed. Otherwise, > > > usb_ep struct may be wrong if usb devcie's operating speed is changed. > > > > > > The key point in this patch is that we want to make sure the > > > descpointer > > > > Typo > > > > Otherwise: > > Reviewed-by: Peter Chen <peter.chen@nxp.com> > > > > I have uploaded a new patch following your feedback. > Could you please help to review it again? > Feel free to add my Reviewed-by for your v3 since you only change the typo I pointed. Peter
diff --git a/drivers/usb/gadget/function/f_ecm.c b/drivers/usb/gadget/function/f_ecm.c index 6ce044008cf6..460d5d7c984f 100644 --- a/drivers/usb/gadget/function/f_ecm.c +++ b/drivers/usb/gadget/function/f_ecm.c @@ -621,8 +621,12 @@ static void ecm_disable(struct usb_function *f) DBG(cdev, "ecm deactivated\n"); - if (ecm->port.in_ep->enabled) + if (ecm->port.in_ep->enabled) { gether_disconnect(&ecm->port); + } else { + ecm->port.in_ep->desc = NULL; + ecm->port.out_ep->desc = NULL; + } usb_ep_disable(ecm->notify); ecm->notify->desc = NULL; diff --git a/drivers/usb/gadget/function/f_rndis.c b/drivers/usb/gadget/function/f_rndis.c index d48df36622b7..0d8e4a364ca6 100644 --- a/drivers/usb/gadget/function/f_rndis.c +++ b/drivers/usb/gadget/function/f_rndis.c @@ -618,6 +618,7 @@ static void rndis_disable(struct usb_function *f) gether_disconnect(&rndis->port); usb_ep_disable(rndis->notify); + rndis->notify->desc = NULL; } /*-------------------------------------------------------------------------*/
Gadget driver should always use config_ep_by_speed() to initialize usb_ep struct according to usb device's operating speed. Otherwise, usb_ep struct may be wrong if usb devcie's operating speed is changed. The key point in this patch is that we want to make sure the descpointer in usb_ep struct will be set to NULL when gadget is disconnected. This will force it to call config_ep_by_speed() to correctly initialize usb_ep struct based on the new operating speed when gadget is re-connected later. Signed-off-by: EJ Hsu <ejh@nvidia.com> --- v2: fix the coding style --- drivers/usb/gadget/function/f_ecm.c | 6 +++++- drivers/usb/gadget/function/f_rndis.c | 1 + 2 files changed, 6 insertions(+), 1 deletion(-)