diff options
author | Dan Williams <dan.j.williams@intel.com> | 2013-12-13 09:57:03 +0100 |
---|---|---|
committer | Dan Williams <dan.j.williams@intel.com> | 2013-12-13 09:57:03 +0100 |
commit | 8194ee27764b1a86fa7a6b0d411f0a225a6abd5f (patch) | |
tree | aef93edae575d034f2eaf377098c422d81ead6d0 /drivers | |
parent | dmaengine: mv_xor: fix oops when channels fail to initialise (diff) | |
download | linux-8194ee27764b1a86fa7a6b0d411f0a225a6abd5f.tar.xz linux-8194ee27764b1a86fa7a6b0d411f0a225a6abd5f.zip |
dmaengine: fix sleep in atomic
BUG: sleeping function called from invalid context at mm/mempool.c:203
in_atomic(): 1, irqs_disabled(): 0, pid: 43502, name: linbug
no locks held by linbug/43502.
CPU: 7 PID: 43502 Comm: linbug Not tainted 3.13.0-rc1+ #15
Hardware name:
0000000000000010 ffff88005ebd1878 ffffffff8172d512 ffff8801752bc1c0
ffff8801752bc1c0 ffff88005ebd1898 ffffffff8109d1f6 ffff88005f9a3c58
ffff880177f0f080 ffff88005ebd1918 ffffffff81161f43 ffff88005ebd18f8
Call Trace:
[<ffffffff8172d512>] dump_stack+0x4e/0x68
[<ffffffff8109d1f6>] __might_sleep+0xe6/0x120
[<ffffffff81161f43>] mempool_alloc+0x93/0x170
[<ffffffff810c0c34>] ? mark_held_locks+0x74/0x140
[<ffffffff8118a826>] ? follow_page_mask+0x556/0x600
[<ffffffff814107ae>] dmaengine_get_unmap_data+0x2e/0x60
[<ffffffff81410f11>] dma_async_memcpy_pg_to_pg+0x41/0x1c0
[<ffffffff814110e0>] dma_async_memcpy_buf_to_pg+0x50/0x60
[<ffffffff81411bdc>] dma_memcpy_to_iovec+0xfc/0x190
[<ffffffff816163af>] dma_skb_copy_datagram_iovec+0x6f/0x2b0
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/dma/dmaengine.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/dma/dmaengine.c b/drivers/dma/dmaengine.c index b601024f518c..ef63b9058f3c 100644 --- a/drivers/dma/dmaengine.c +++ b/drivers/dma/dmaengine.c @@ -1054,7 +1054,7 @@ dma_async_memcpy_pg_to_pg(struct dma_chan *chan, struct page *dest_pg, dma_cookie_t cookie; unsigned long flags; - unmap = dmaengine_get_unmap_data(dev->dev, 2, GFP_NOIO); + unmap = dmaengine_get_unmap_data(dev->dev, 2, GFP_NOWAIT); if (!unmap) return -ENOMEM; |