On Mon, 30 Jul 2007, Pete Zaitcev wrote:

> On Mon, 30 Jul 2007 17:06:16 -0400 (EDT), Alan Stern <[EMAIL PROTECTED]> 
> wrote:
> 
> > --- usb-2.6.orig/drivers/usb/core/urb.c
> > +++ usb-2.6/drivers/usb/core/urb.c
> > @@ -309,7 +309,21 @@ int usb_submit_urb(struct urb *urb, gfp_
> >     xfertype = usb_endpoint_type(&ep->desc);
> > -   is_out = usb_pipeout(urb->pipe);
> > +   if (xfertype == USB_ENDPOINT_XFER_CONTROL) {
> > +           struct usb_ctrlrequest *setup =
> > +                           (struct usb_ctrlrequest *) urb->setup_packet;
> > +
> > +           if (!setup)
> > +                   return -ENOEXEC;
> 
> I welcome this. I should be able to rip some code out of usbmon now.
> 
> The comment in usb.h says:
>  *  (Note
>  * that transfer_buffer and setup_packet must still be set because not all
>  * host controllers use DMA, nor do virtual root hubs).
> 
> But in case of data, this happens when a driver attempts to set up DMA
> with a highmem page without doing a kmap first. I think we never enforced
> the above comment.

It is "enforced" only for host controllers that use PIO, and only in
the most rudimentary way -- the driver crashes if the field isn't set!

> And I think that I managed to oops usbmon by dereferencing
> garbage in transfer_buffer before but I may not remember right.
> But the setup packet should be mapped to be used, right? There's no
> good reason for setup_packet not to be mapped, right?

Not that I can think of.  Nobody ever sends setup packet contents 
through scatter-gather buffers.

Alan Stern

P.S.: I appreciate the critical review!


-------------------------------------------------------------------------
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/
_______________________________________________
linux-usb-devel@lists.sourceforge.net
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to