Messages in this thread Patch in this message | | | From | Alexey Khoroshilov <> | Subject | [PATCH] usb: gadget: mv_udc: use GFP_ATOMIC in build_dtd() | Date | Fri, 6 Jul 2012 01:09:48 +0200 |
| |
build_dtd() is called either from interrupt handler mv_udc_irq() or with spinlock held (from mv_ep_queue()). So we should alloc memory with GFP_ATOMIC, not GFP_KERNEL.
Found by Linux Driver Verification project (linuxtesting.org).
Signed-off-by: Alexey Khoroshilov <khoroshilov@ispras.ru> --- drivers/usb/gadget/mv_udc_core.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/usb/gadget/mv_udc_core.c b/drivers/usb/gadget/mv_udc_core.c index 117a4bb..693e1e4 100644 --- a/drivers/usb/gadget/mv_udc_core.c +++ b/drivers/usb/gadget/mv_udc_core.c @@ -374,7 +374,7 @@ static struct mv_dtd *build_dtd(struct mv_req *req, unsigned *length, * Be careful that no _GFP_HIGHMEM is set, * or we can not use dma_to_virt */ - dtd = dma_pool_alloc(udc->dtd_pool, GFP_KERNEL, dma); + dtd = dma_pool_alloc(udc->dtd_pool, GFP_ATOMIC, dma); if (dtd == NULL) return dtd; -- 1.7.9.5
| |