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@xxxxxxx> > 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@xxxxxxxxxx> > --- > 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 > -- Thanks, Peter Chen