On Fri, Jun 07, 2002, Roland Dreier <[EMAIL PROTECTED]> wrote:
> >>>>> "Johannes" == Johannes Erdfelt <[EMAIL PROTECTED]> writes:
>
> Johannes> Nope, the HCD's do that. This patch looks good, but
> Johannes> could use a little bit of cleaning up.
>
> What cleaning up would you like to see? I would definitely like to
> get these fixes into the main tree so just let me know...
@@ -1044,17 +1072,19 @@
* If nothing changed, we reprogram the configuration and then
* the alternate settings.
*/
- ret = usb_get_descriptor(dev, USB_DT_DEVICE, 0, &descriptor,
- sizeof(descriptor));
+ descriptor = kmalloc(sizeof *descriptor, GFP_KERNEL);
+ ret = usb_get_descriptor(dev, USB_DT_DEVICE, 0, descriptor,
+ sizeof *descriptor);
if (ret < 0)
return ret;
[...]
There's a couple of places where you allocate memory, but don't check to
see if it succeeded. That's bad.
Also, I'm not sure what your patch to usb_get_descriptor is for:
diff -Nru a/drivers/usb/usb.c b/drivers/usb/usb.c
--- a/drivers/usb/usb.c Fri Jun 7 16:35:31 2002
+++ b/drivers/usb/usb.c Fri Jun 7 16:35:31 2002
@@ -1787,16 +1787,23 @@
{
int i = 5;
int result;
+ void *tmp_buf;
- memset(buf,0,size); // Make sure we parse really received data
+ tmp_buf = kmalloc(size, in_interrupt() ? GFP_ATOMIC : GFP_KERNEL);
+ if (!tmp_buf) {
+ return -ENOMEM;
+ }
+ memset(tmp_buf,0,size); // Make sure we parse really received data
while (i--) {
if ((result = usb_control_msg(dev, usb_rcvctrlpipe(dev, 0),
USB_REQ_GET_DESCRIPTOR, USB_DIR_IN,
- (type << 8) + index, 0, buf, size, HZ * GET_TIMEOUT)) > 0 ||
+ (type << 8) + index, 0, tmp_buf, size, HZ * GET_TIMEOUT)) > 0
+||
result == -EPIPE)
break; /* retry if the returned length was 0; flaky device */
}
+ memcpy(buf, tmp_buf, size);
+ kfree(tmp_buf);
return result;
}
All of the uses of usb_get_descriptor in usb.c are safe. I'd much rather
make the calling routine require a DMA capable buffer than in
usb_get_descriptor.
Also, please use tabs instead of spaces when appropriate :)
JE
_______________________________________________________________
Don't miss the 2002 Sprint PCS Application Developer's Conference
August 25-28 in Las Vegas -
http://devcon.sprintpcs.com/adp/index.cfm?source=osdntextlink
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel