IB/qib: Use GFP_ATOMIC when locks are held
authorJulia Lawall <julia.lawall@lip6.fr>
Mon, 9 Jan 2012 09:40:47 +0000 (10:40 +0100)
committerRoland Dreier <roland@purestorage.com>
Fri, 27 Jan 2012 17:59:22 +0000 (09:59 -0800)
alloc_dummy_hdrq() is called with locks held and thus should not use
GFP_KERNEL.

The semantic patch that makes this report is available in
scripts/coccinelle/locks/call_kern.cocci.

Signed-off-by: Julia Lawall <julia.lawall@lip6.fr>
Acked-by: Mike Marciniszyn <mike.marciniszyn@qlogic.com>
Signed-off-by: Roland Dreier <roland@purestorage.com>
drivers/infiniband/hw/qib/qib_iba6120.c

index 4f18e2d332dfd79ba8dcfc66a6c9251347a562c1..d0c64d514813909c7a863a0f29939e64123b7cba 100644 (file)
@@ -2105,7 +2105,7 @@ static void alloc_dummy_hdrq(struct qib_devdata *dd)
        dd->cspec->dummy_hdrq = dma_alloc_coherent(&dd->pcidev->dev,
                                        dd->rcd[0]->rcvhdrq_size,
                                        &dd->cspec->dummy_hdrq_phys,
-                                       GFP_KERNEL | __GFP_COMP);
+                                       GFP_ATOMIC | __GFP_COMP);
        if (!dd->cspec->dummy_hdrq) {
                qib_devinfo(dd->pcidev, "Couldn't allocate dummy hdrq\n");
                /* fallback to just 0'ing */