Re: [PATCH] USB: g_mass_storage: superfluous and missing packets fixed

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, 26 Jan 2010, Michal Nazarewicz wrote:

> The mass storage function responded needlessly to a set
> configuration packet.  This was a leftover from converting
> gadget (file storage gadget) into a composite function.
> 
> Moreover, it has failed to respond to get max LUN request.
> Adding request queueing made the function work better.
> 
> Signed-off-by: Michal Nazarewicz <m.nazarewicz@xxxxxxxxxxx>
> Signed-off-by: Marek Szyprowski <m.szyprowski@xxxxxxxxxxx>
> ---
>  drivers/usb/gadget/f_mass_storage.c |   16 +++++++---------
>  1 files changed, 7 insertions(+), 9 deletions(-)
> 
> diff --git a/drivers/usb/gadget/f_mass_storage.c b/drivers/usb/gadget/f_mass_storage.c
> index a37640e..84f6491 100644
> --- a/drivers/usb/gadget/f_mass_storage.c
> +++ b/drivers/usb/gadget/f_mass_storage.c
> @@ -614,7 +614,13 @@ static int fsg_setup(struct usb_function *f,
>  			return -EDOM;
>  		VDBG(fsg, "get max LUN\n");
>  		*(u8 *) req->buf = fsg->common->nluns - 1;
> -		return 1;
> +
> +		/* Respond with data/status */
> +		req->length = 1;
> +		req->zero = 1 < w_length;

I'm not familiar with the context here.  It sure looks like the routine 
originally named class_setup_req() was renamed to fsg_setup(), and the 
additional code originally present in fsg_setup() was dropped.  That 
could easily be a bug... I don't know if it really is.

Regardless, setting req->length to 1 is probably wrong if w_length is
0.  And setting req->zero at all is unnecessary.

> +		fsg->common->ep0req_name =
> +			ctrl->bRequestType & USB_DIR_IN ? "ep0-in" : "ep0-out";
> +		return ep0_queue(fsg->common);

Alan Stern

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux