mm: add a might_sleep_if in dma_pool_alloc
Subsystems (2)
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.
Signed-off-by Dima Zavin <[email protected]>
--- mm/dmapool.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-)
mm/dmapool.c +2 -0
@@ -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>