diff mbox series

[v2] usb: gadget: fix wrong endpoint desc

Message ID 20191204053322.35776-1-ejh@nvidia.com (mailing list archive)
State Superseded
Headers show
Series [v2] usb: gadget: fix wrong endpoint desc | expand

Commit Message

EJ Hsu Dec. 4, 2019, 5:33 a.m. UTC
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(-)

Comments

Peter Chen Dec. 4, 2019, 7:06 a.m. UTC | #1
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
>
EJ Hsu Dec. 6, 2019, 2:24 a.m. UTC | #2
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 Dec. 6, 2019, 2:36 a.m. UTC | #3
> 
> 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 mbox series

Patch

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;
 }
 
 /*-------------------------------------------------------------------------*/