mirror of
https://github.com/torvalds/linux.git
synced 2024-11-10 22:21:40 +00:00
[PATCH] fix BUG_ON(!PageSlab) from fallback_alloc
pdflush hit the BUG_ON(!PageSlab(page)) in kmem_freepages called from fallback_alloc: cache_grow already freed those pages when alloc_slabmgmt failed. But it wouldn't have freed them if __GFP_NO_GROW, so make sure fallback_alloc doesn't waste its time on that case. Signed-off-by: Hugh Dickins <hugh@veritas.com> Acked-by: Christoph Lameter <clameter@sgi.com> Acked-by: Pekka J Enberg <penberg@cs.helsinki.fi> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
be6aab0e9f
commit
b6a6045181
@ -3281,7 +3281,7 @@ retry:
|
|||||||
flags | GFP_THISNODE, nid);
|
flags | GFP_THISNODE, nid);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!obj) {
|
if (!obj && !(flags & __GFP_NO_GROW)) {
|
||||||
/*
|
/*
|
||||||
* This allocation will be performed within the constraints
|
* This allocation will be performed within the constraints
|
||||||
* of the current cpuset / memory policy requirements.
|
* of the current cpuset / memory policy requirements.
|
||||||
@ -3310,7 +3310,7 @@ retry:
|
|||||||
*/
|
*/
|
||||||
goto retry;
|
goto retry;
|
||||||
} else {
|
} else {
|
||||||
kmem_freepages(cache, obj);
|
/* cache_grow already freed obj */
|
||||||
obj = NULL;
|
obj = NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user