From: Dima Zavin <dima@android.com>
To: linux-kernel@vger.kernel.org
Cc: linux-mm@kvack.org, Dima Zavin <dima@android.com>
Subject: [PATCH] mm: add a might_sleep_if in dma_pool_alloc
Date: Wed, 22 Sep 2010 20:52:47 -0700 [thread overview]
Message-ID: <1285213967-14052-1-git-send-email-dima@android.com> (raw)
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 <dima@android.com>
---
mm/dmapool.c | 2 ++
1 files changed, 2 insertions(+), 0 deletions(-)
diff --git a/mm/dmapool.c b/mm/dmapool.c
index 3df0637..4df2de7 100644
--- a/mm/dmapool.c
+++ b/mm/dmapool.c
@@ -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) {
--
1.6.6
WARNING: multiple messages have this Message-ID (diff)
From: Dima Zavin <dima@android.com>
To: linux-kernel@vger.kernel.org
Cc: linux-mm@kvack.org, Dima Zavin <dima@android.com>
Subject: [PATCH] mm: add a might_sleep_if in dma_pool_alloc
Date: Wed, 22 Sep 2010 20:52:47 -0700 [thread overview]
Message-ID: <1285213967-14052-1-git-send-email-dima@android.com> (raw)
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 <dima@android.com>
---
mm/dmapool.c | 2 ++
1 files changed, 2 insertions(+), 0 deletions(-)
diff --git a/mm/dmapool.c b/mm/dmapool.c
index 3df0637..4df2de7 100644
--- a/mm/dmapool.c
+++ b/mm/dmapool.c
@@ -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) {
--
1.6.6
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
next reply other threads:[~2010-09-23 3:53 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-09-23 3:52 Dima Zavin [this message]
2010-09-23 3:52 ` [PATCH] mm: add a might_sleep_if in dma_pool_alloc Dima Zavin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1285213967-14052-1-git-send-email-dima@android.com \
--to=dima@android.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.