On Wed, 26 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 creating the smallest DMA buffer with the > size of ARCH_DMA_MINALIGN. This will be either 32 or 64 bytes. If the > ARCH_DMA_MINALIGN is 128 (currently powerpc64, mips ip32, x86 pentium 4) then > it will create the first buffer with 128 bytes and will have only 3 > buffers. There is a BUILD_BUG_ON() now in case someone has a minalign of > 128 bytes or more. More than 128 bytes. Not "128 bytes or more". > > Cc: stable@xxxxxxxxxxxxxxx > Signed-off-by: Sebastian Andrzej Siewior <bigeasy@xxxxxxxxxxxxx> > --- > v1…v2: rewrite pool_max so it is less confusing. Acked-by: Alan Stern <stern@xxxxxxxxxxxxxxxxxxx> -- 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