mm/mempool: warn about __GFP_ZERO usage
authorSebastian Ott <sebott@linux.vnet.ibm.com>
Wed, 4 Jun 2014 23:07:00 +0000 (16:07 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Wed, 4 Jun 2014 23:53:58 +0000 (16:53 -0700)
Memory obtained via mempool_alloc is not always zeroed even when
called with __GFP_ZERO. Add a note and VM_BUG_ON statement to make
that clear.

[akpm@linux-foundation.org: use VM_WARN_ON_ONCE]
Signed-off-by: Sebastian Ott <sebott@linux.vnet.ibm.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
mm/mempool.c

index 905434f..455d468 100644 (file)
@@ -192,6 +192,7 @@ EXPORT_SYMBOL(mempool_resize);
  * returns NULL. Note that due to preallocation, this function
  * *never* fails when called from process contexts. (it might
  * fail if called from an IRQ context.)
+ * Note: using __GFP_ZERO is not supported.
  */
 void * mempool_alloc(mempool_t *pool, gfp_t gfp_mask)
 {
@@ -200,6 +201,7 @@ void * mempool_alloc(mempool_t *pool, gfp_t gfp_mask)
        wait_queue_t wait;
        gfp_t gfp_temp;
 
+       VM_WARN_ON_ONCE(gfp_mask & __GFP_ZERO);
        might_sleep_if(gfp_mask & __GFP_WAIT);
 
        gfp_mask |= __GFP_NOMEMALLOC;   /* don't allocate emergency reserves */