From: Luis Lloret <[EMAIL PROTECTED]>
This patch makes the File Storage Gadget stall the control endpoint
when a MSC class request is made with wValue != 0. This change makes
some MSC compliance test warnings dissapear.
Signed-off-by: Luis Lloret <[EMAIL PROTECTED]>
---
Thanks for the explanations, Alan. I missed quite a lot things. Sorry.
I added the CBI ADSC pathway and removed the comments.
Here I go again...
The patch:
--- linux-2.6.21.5/drivers/usb/gadget/file_storage.c.orig
2007-07-23 13:54:53.000000000 +0200
+++ linux-2.6.21.5/drivers/usb/gadget/file_storage.c 2007-07-24
09:11:19.000000000 +0200
@@ -1296,6 +1296,7 @@ static int class_setup_req(struct fsg_de
struct usb_request *req = fsg->ep0req;
int value = -EOPNOTSUPP;
u16 w_index = le16_to_cpu(ctrl->wIndex);
+ u16 w_value = le16_to_cpu(ctrl->wValue);
u16 w_length = le16_to_cpu(ctrl->wLength);
if (!fsg->config)
@@ -1309,7 +1310,7 @@ static int class_setup_req(struct fsg_de
if (ctrl->bRequestType != (USB_DIR_OUT |
USB_TYPE_CLASS | USB_RECIP_INTERFACE))
break;
- if (w_index != 0) {
+ if (w_index != 0 || w_value != 0) {
value = -EDOM;
break;
}
@@ -1325,7 +1326,7 @@ static int class_setup_req(struct fsg_de
if (ctrl->bRequestType != (USB_DIR_IN |
USB_TYPE_CLASS | USB_RECIP_INTERFACE))
break;
- if (w_index != 0) {
+ if (w_index != 0 || w_value != 0) {
value = -EDOM;
break;
}
@@ -1344,7 +1345,7 @@ static int class_setup_req(struct fsg_de
if (ctrl->bRequestType != (USB_DIR_OUT |
USB_TYPE_CLASS | USB_RECIP_INTERFACE))
break;
- if (w_index != 0) {
+ if (w_index != 0 || w_value != 0) {
value = -EDOM;
break;
}
2007/7/23, Alan Stern <[EMAIL PROTECTED]>:
> On Mon, 23 Jul 2007, Luis Lloret wrote:
>
> > This patch makes the File Storage Gadget stall the control endpoint
> > when a MSC class request (USB_BULK_RESET_REQUEST or
> > USB_BULK_RESET_REQUEST) is made with wValue != 0, that is what the
> > standard asks for. Just a very minor change, indeed.
>
> The standard does not say that the device has to STALL if wValue != 0.
> It only says that the host must set wValue to 0.
>
> > This change makes some USB MSC compliance tests warnings disappear.
> > This is my first kernel patch submission, and I've tried my best to
> > avoid any error. If I made any, pls let me know. Thank you.
>
> You didn't CC: the maintainer of the driver you want to change.
>
> You didn't add a Signed-off-by: line as explained in
> Documentation/SubmittingPatches.
>
> > --- linux-2.6.21.5/drivers/usb/gadget/file_storage.c.orig
> > 2007-07-23 13:54:53.000000000 +0200
> > +++ linux-2.6.21.5/drivers/usb/gadget/file_storage.c 2007-07-23
> > 13:59:55.000000000 +0200
> > @@ -1296,6 +1296,7 @@ static int class_setup_req(struct fsg_de
> > struct usb_request *req = fsg->ep0req;
> > int value = -EOPNOTSUPP;
> > u16 w_index = le16_to_cpu(ctrl->wIndex);
> > + u16 w_value = le16_to_cpu(ctrl->wValue);
> > u16 w_length = le16_to_cpu(ctrl->wLength);
> >
> > if (!fsg->config)
> > @@ -1309,7 +1310,8 @@ static int class_setup_req(struct fsg_de
> > if (ctrl->bRequestType != (USB_DIR_OUT |
> > USB_TYPE_CLASS |
> > USB_RECIP_INTERFACE))
> > break;
> > - if (w_index != 0) {
> > + // To fully comply with USB MSC tests, we
> > check for w_value != 0
> > + if (w_index != 0 || w_value != 0) {
> > value = -EDOM;
> > break;
> > }
> > @@ -1325,7 +1327,8 @@ static int class_setup_req(struct fsg_de
> > if (ctrl->bRequestType != (USB_DIR_IN |
> > USB_TYPE_CLASS |
> > USB_RECIP_INTERFACE))
> > break;
> > - if (w_index != 0) {
> > + // To fully comply with USB MSC tests, we
> > check for w_value != 0
> > + if (w_index != 0 || w_value != 0) {
> > value = -EDOM;
> > break;
> > }
>
> The two comment lines are unnecessary, since it's obvious what the code
> does (check for valid setup parameters).
>
> You should also add the same test to the CBI ADSC pathway.
>
> If you resubmit the patch with those changes, I will accept it.
>
> Alan Stern
>
>
-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems? Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
[email protected]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel