On Mon, May 02, 2011 at 10:04:34PM +0100, Ben Hutchings wrote: > So this was using NET_IP_ALIGN as an offset into the URB. Which was > totally bogus, as its value has long been architecture-dependent. The > code is also claiming to put len bytes but only copying len - delta. > > The correct code would be something like: > > if (urb->actual_length <= IPHETH_IP_ALIGN) { > dev->net->stats.rx_length_errors++; > return; > } > len = urb->actual_length - IPHETH_IP_ALIGN; > buf = urb->transfer_buffer + IPHETH_IP_ALIGN; > > dev_alloc_skb(len); > ... > memcpy(skb_put(skb, len), buf, len); Thanks for the response Ben. I can try to change the code, but I don't own the device anymore. Changing the code without being able to test it would be walking blindfolded :-/ If upstrem (everyone involved is in CC) can't do it, I can submit the changes advised by Ben, but I can't warantee anything beyond successful compilation. I don't think that it would be acceptable here. Regards, -- L. Alberto Giménez JabberID agimenez@xxxxxxxxxxxxxxxxxx GnuPG key ID 0x3BAABDE1 -- 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