The original code did DMA on a stack variable, so I made it an allocated pointer. Compile tested only. Signed-off-by: Dan Carpenter <error27@xxxxxxxxx> --- orig/drivers/usb/serial/io_edgeport.c 2009-12-30 16:20:35.000000000 +0200 +++ devel/drivers/usb/serial/io_edgeport.c 2009-12-30 16:25:27.000000000 +0200 @@ -372,21 +372,24 @@ static void update_edgeport_E2PROM(struc ************************************************************************/ static int get_string(struct usb_device *dev, int Id, char *string, int buflen) { - struct usb_string_descriptor StringDesc; + struct usb_string_descriptor *StringDesc; struct usb_string_descriptor *pStringDesc; dbg("%s - USB String ID = %d", __func__, Id); + StringDesc = kmalloc(sizeof(*StringDesc), GFP_KERNEL); + if (!StringDesc) + return 0; if (!usb_get_descriptor(dev, USB_DT_STRING, Id, - &StringDesc, sizeof(StringDesc))) + StringDesc, sizeof(*StringDesc))) return 0; - pStringDesc = kmalloc(StringDesc.bLength, GFP_KERNEL); + pStringDesc = kmalloc(StringDesc->bLength, GFP_KERNEL); if (!pStringDesc) return 0; if (!usb_get_descriptor(dev, USB_DT_STRING, Id, - pStringDesc, StringDesc.bLength)) { + pStringDesc, StringDesc->bLength)) { kfree(pStringDesc); return 0; } -- 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