Re: [ 035/167] [PATCH] usb: gadget: udc-core: fix asymmetric calls in remove_driver

Herton Ronaldo Krzesinski
2012-05-09T19:25:55Z

On Wed, May 09, 2012 at 06:51:04AM +0100, Ben Hutchings wrote:
> 3.2-stable review patch. If anyone has any objections, please let me know.
>
> ------------------
>
> From: Kishon Vijay Abraham I <kishon@ti.com>
>
> commit 8ae8090c82eb407267001f75b3d256b3bd4ae691 upstream.

After applying this it seems we need also this upstream commit applied
in addition:
320cd1e750f1bf3e47eb41209dcb2be07264cb76

>
> During modprobe of gadget driver, pullup is called after
> udc_start. In order to make the exit path symmetric when
> removing a gadget driver, call pullup before ->udc_stop.
>
> This is needed to avoid issues with PM where udc_stop
> disables the module completely (put IP in reset state,
> cut functional and interface clocks, and so on), which
> prevents us from accessing the IP's address space,
> thus creating the possibility of an abort exception
> when we try to access IP's address space after clocks
> are off.
>
> Signed-off-by: Partha Basak <p-basak2@ti.com>
> Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
> Signed-off-by: Felipe Balbi <balbi@ti.com>
> Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
> ---
> drivers/usb/gadget/udc-core.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/usb/gadget/udc-core.c b/drivers/usb/gadget/udc-core.c
> index c261887..2fa9865 100644
> --- a/drivers/usb/gadget/udc-core.c
> +++ b/drivers/usb/gadget/udc-core.c
> @@ -264,8 +264,8 @@ static void usb_gadget_remove_driver(struct usb_udc *udc)
> if (udc_is_newstyle(udc)) {
> udc->driver->disconnect(udc->gadget);
> udc->driver->unbind(udc->gadget);
> - usb_gadget_udc_stop(udc->gadget, udc->driver);
> usb_gadget_disconnect(udc->gadget);
> + usb_gadget_udc_stop(udc->gadget, udc->driver);
> } else {
> usb_gadget_stop(udc->gadget, udc->driver);
> }
> --
> 1.7.10
>
>
>
> --
> To unsubscribe from this list: send the line "unsubscribe stable" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>