mirror of https://gitee.com/openkylin/linux.git
mm/mempool: warn about __GFP_ZERO usage
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>
This commit is contained in:
parent
02a8efeda8
commit
8bf8fcb076
|
@ -192,6 +192,7 @@ EXPORT_SYMBOL(mempool_resize);
|
||||||
* returns NULL. Note that due to preallocation, this function
|
* returns NULL. Note that due to preallocation, this function
|
||||||
* *never* fails when called from process contexts. (it might
|
* *never* fails when called from process contexts. (it might
|
||||||
* fail if called from an IRQ context.)
|
* fail if called from an IRQ context.)
|
||||||
|
* Note: using __GFP_ZERO is not supported.
|
||||||
*/
|
*/
|
||||||
void * mempool_alloc(mempool_t *pool, gfp_t gfp_mask)
|
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;
|
wait_queue_t wait;
|
||||||
gfp_t gfp_temp;
|
gfp_t gfp_temp;
|
||||||
|
|
||||||
|
VM_WARN_ON_ONCE(gfp_mask & __GFP_ZERO);
|
||||||
might_sleep_if(gfp_mask & __GFP_WAIT);
|
might_sleep_if(gfp_mask & __GFP_WAIT);
|
||||||
|
|
||||||
gfp_mask |= __GFP_NOMEMALLOC; /* don't allocate emergency reserves */
|
gfp_mask |= __GFP_NOMEMALLOC; /* don't allocate emergency reserves */
|
||||||
|
|
Loading…
Reference in New Issue