diff options
author | Andrew Morton <akpm@linux-foundation.org> | 2011-01-14 00:47:25 +0100 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2011-01-14 02:32:48 +0100 |
commit | 684265d4a30f133162f06ddb2e5010608e60e4bb (patch) | |
tree | f4eb3cab6bdbebf48360a8bc8696588483ac0e52 | |
parent | mm/dmapool.c: take lock only once in dma_pool_free() (diff) | |
download | linux-684265d4a30f133162f06ddb2e5010608e60e4bb.tar.xz linux-684265d4a30f133162f06ddb2e5010608e60e4bb.zip |
mm/dmapool.c: use TASK_UNINTERRUPTIBLE in dma_pool_alloc()
As it stands this code will degenerate into a busy-wait if the calling task
has signal_pending().
Cc: Rolf Eike Beer <eike-kernel@sf-tec.de>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r-- | mm/dmapool.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/mm/dmapool.c b/mm/dmapool.c index a2f6295b4df4..03bf3bb4519a 100644 --- a/mm/dmapool.c +++ b/mm/dmapool.c @@ -324,7 +324,7 @@ void *dma_pool_alloc(struct dma_pool *pool, gfp_t mem_flags, if (mem_flags & __GFP_WAIT) { DECLARE_WAITQUEUE(wait, current); - __set_current_state(TASK_INTERRUPTIBLE); + __set_current_state(TASK_UNINTERRUPTIBLE); __add_wait_queue(&pool->waitq, &wait); spin_unlock_irqrestore(&pool->lock, flags); |