Skip to contentSkip to conversation

mm: add a might_sleep_if in dma_pool_alloc

PATCH New Dima Zavin 1 participant 1 message Sep 23, 2010

Subsystems (2)
lore
Share & tools
lore

Dima Zavin

author
#0 lore raw

PATCH 1/1 mm: add a might_sleep_if in dma_pool_alloc

Buggy drivers (e.g. fsl_udc) could call dma_pool_alloc from atomic context with GFP_KERNEL. In most instances, the first pool_alloc_page call would succeed and the sleeping functions would never be called. This allowed the buggy drivers to slip through the cracks.

Add a might_sleep_if checking for __GFP_WAIT in flags.

---
 mm/dmapool.c |    2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)
mm/dmapool.c +2 -0
index 3df0637..4df2de7 100644
@@ -311,6 +311,8 @@ void *dma_pool_alloc(struct dma_pool *pool, gfp_t mem_flags,
 	size_t offset;
 	void *retval;
 
+	might_sleep_if(mem_flags & __GFP_WAIT);
+
 	spin_lock_irqsave(&pool->lock, flags);
  restart:
 	list_for_each_entry(page, &pool->page_list, page_list) {
Signature · 7 lines
1.6.6

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to [email protected].  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>