On Thu, 2 Aug 2012, Virupax Sadashivpetimath wrote: > In case of USB bulk transfer, when himem page > is received, the usb_sg_init function sets the > urb transfer buffer to NULL. When such URB > transfer is handled, kernel crashes in PIO mode. > Handle this by mapping the highmem buffer in PIO mode. > --- a/include/linux/usb.h > +++ b/include/linux/usb.h > @@ -21,6 +21,7 @@ > #include <linux/sched.h> /* for current && schedule_timeout */ > #include <linux/mutex.h> /* for struct mutex */ > #include <linux/pm_runtime.h> /* for runtime PM */ > +#include <linux/scatterlist.h> > > struct usb_device; > struct usb_driver; > @@ -1309,6 +1310,7 @@ struct urb { > usb_complete_t complete; /* (in) completion routine */ > struct usb_iso_packet_descriptor iso_frame_desc[0]; > /* (in) ISO ONLY */ > + struct sg_mapping_iter sg_miter; /* handling highmem data in PIO mode */ > }; This is unacceptable. Fields like this should be stored in the URB's hcpriv structure, not in the URB itself. Alan Stern -- 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