On Wed, 12 May 2010, Ole Reinhardt wrote: > Hi! > > > That's right. The fix should be simple: Change the GFP_KERNEL in that > > dma_pool_alloc() call to GFP_ATOMIC. > > That was my first thought too. But changing GFP_KERNEL into GFP_ATOMIC > leads to a low memory situation after short time as dma_pool_alloc might > fail if there is currently no memory available (the same situation in > which the schedule_timeout would be called otherwise: > > g_serial gadget: acm ttyGS0 can't notify serial state, -12 > > Practicaly this leads to a broken communication. So no real solution. > > > It wouldn't be surprising if the same sort of bug occurs at other > > places in that driver. > > Indeed, but most other places where this call chain could occur run in a > work_queue, so that's not atomic. Did you try writing to the authors of the Freescale UDC driver? They are the best people to ask. 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