Re: [RFC PATCH] USB: usbtest: fix wrong buffer_offset() computation

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, 24 Nov 2014, Sebastian Andrzej Siewior wrote:

> the following error pops up during "testusb -a -t 10"
> | musb-hdrc musb-hdrc.1.auto: dma_pool_free buffer-128,	f134e000/be842000 (bad dma)
> 
> hcd_buffer_create() creates a few buffers, the smallest has 32 bytes of
> size. ARCH_KMALLOC_MINALIGN is set to 64 bytes. This combo results in
> hcd_buffer_alloc() returning memory which is 32bytes aligned and it
> might by identified by buffer_offset() as another buffer. This means the
> buffer which is on a 32byte boundary will not get freed, instead it
> tries to free another buffer with the error message.
> 
> This patch fixes the issue by checking only if the lowest bit is set
> which is the only "unaligned" offset which is currently passed to
> usbtest_alloc_urb(). Another way of dealing with this would be to
> respect ARCH_KMALLOC_MINALIGN in hcd_buffer_create() and having the
> smallest buffer starting at 64 bytes in this case.

I think the second alternative would make more sense.  It's pointless 
to have DMA buffers that aren't aligned strictly enough.

Don't forget that other architectures can have other values for 
ARCH_KMALLOC_MINALIGN.  The code should work on all architectures.

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




[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux