SLUB slab validation: Alloc while interrupts are disabled must use GFP_ATOMIC
authorChristoph Lameter <clameter@sgi.com>
Sat, 16 Jun 2007 17:15:57 +0000 (10:15 -0700)
committerLinus Torvalds <torvalds@woody.linux-foundation.org>
Sat, 16 Jun 2007 20:16:15 +0000 (13:16 -0700)
The data structure to manage the information gathered about functions
allocating and freeing objects is allocated when the list_lock has already
been taken.  We need to allocate with GFP_ATOMIC instead of GFP_KERNEL.

Signed-off-by: Christoph Lameter <clameter@sgi.com>
Cc: Mel Gorman <mel@csn.ul.ie>
Cc: Andy Whitcroft <apw@shadowen.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
mm/slub.c

index c9ab68881b43ebe8525fb2fa1e943f9810229c21..2a1338c516fc331cb9ed22f0e09d697a5917f573 100644 (file)
--- a/mm/slub.c
+++ b/mm/slub.c
@@ -2867,7 +2867,7 @@ static int alloc_loc_track(struct loc_track *t, unsigned long max)
 
        order = get_order(sizeof(struct location) * max);
 
-       l = (void *)__get_free_pages(GFP_KERNEL, order);
+       l = (void *)__get_free_pages(GFP_ATOMIC, order);
 
        if (!l)
                return 0;