diff options
author | Pekka Enberg <penberg@cs.helsinki.fi> | 2008-11-26 03:01:31 -0500 |
---|---|---|
committer | Pekka Enberg <penberg@cs.helsinki.fi> | 2008-12-29 04:40:53 -0500 |
commit | 8759ec50a6cad7ca5a6d63e657d25b85ab5ba44a (patch) | |
tree | 2571915f28cc329642f527996d369bc81d953e39 /mm/slab.c | |
parent | 89124d706db0aa95daacfa4c0df45a43a44d44f4 (diff) |
slab: remove GFP_THISNODE clearing from alloc_slabmgmt()
Commit 6cb062296f73e74768cca2f3eaf90deac54de02d ("Categorize GFP flags")
left one call-site in alloc_slabmgmt() to clear GFP_THISNODE instead of
GFP_CONSTRAINT_MASK. Unfortunately, that ends up clearing __GFP_NOWARN
and __GFP_NORETRY as well which is not what we want. As the only caller
of alloc_slabmgmt() already clears GFP_CONSTRAINT_MASK before passing
local_flags to it, we can just remove the clearing of GFP_THISNODE.
This patch should fix spurious page allocation failure warnings on the
mempool_alloc() path. See the following URL for the original discussion
of the bug:
http://lkml.org/lkml/2008/10/27/100
Acked-by: Christoph Lameter <cl@linux-foundation.org>
Reported-by: Miklos Szeredi <miklos@szeredi.hu>
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
Diffstat (limited to 'mm/slab.c')
-rw-r--r-- | mm/slab.c | 2 |
1 files changed, 1 insertions, 1 deletions
@@ -2609,7 +2609,7 @@ static struct slab *alloc_slabmgmt(struct kmem_cache *cachep, void *objp, | |||
2609 | if (OFF_SLAB(cachep)) { | 2609 | if (OFF_SLAB(cachep)) { |
2610 | /* Slab management obj is off-slab. */ | 2610 | /* Slab management obj is off-slab. */ |
2611 | slabp = kmem_cache_alloc_node(cachep->slabp_cache, | 2611 | slabp = kmem_cache_alloc_node(cachep->slabp_cache, |
2612 | local_flags & ~GFP_THISNODE, nodeid); | 2612 | local_flags, nodeid); |
2613 | if (!slabp) | 2613 | if (!slabp) |
2614 | return NULL; | 2614 | return NULL; |
2615 | } else { | 2615 | } else { |