On Fri, 14 Jun 2013, Jussi Kivilinna wrote:

> Appearently some out-of-tree USB host drivers do not handle DMA alignment for
> URB buffers and let core/hcd.c to do the mapping on architectures that have
> minimum DMA alignment requirements. This leads to random memory corruptions
> and crashes when using USB device drivers that use unaligned URB buffers.
> 
> Instead of fixing host drivers, users end up posting bug reports against
> those USB device drivers that use unaligned buffers for URB; such as with
> rtl8192cu 
> (http://thread.gmane.org/gmane.linux.kernel.wireless.general/105631).
> 
> Patch makes this issue more visible at core level, and hopefully gives hint
> for future hcd driver implementors about this problem.
> 
> Signed-off-by: Jussi Kivilinna <jussi.kivili...@iki.fi>

It's probably okay to leave out the test for the setup buffer.  That 
thing is only 8 bytes long and is unlikely to be misaligned.  The 
transfer buffer is the one that matters.

Also, the error message should include the name of the host controller 
driver.  How about using dev_WARN_ONCE(hcd->self.controller, ...)?

Alan Stern

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to