SLUB: Don't print out OOM warning for __GFP_NOFAIL
authorPekka Enberg <penberg@cs.helsinki.fi>
Thu, 11 Jun 2009 13:18:09 +0000 (16:18 +0300)
committerPekka Enberg <penberg@cs.helsinki.fi>
Sat, 13 Jun 2009 20:37:38 +0000 (23:37 +0300)
We must check for __GFP_NOFAIL like the page allocator does; otherwise we end
up with false positives. While at it, add the printk_ratelimit() check in SLUB
as well.

Cc: Alexander Beregalov <a.beregalov@gmail.com>
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
mm/slub.c

index 9fb892b6afe30c4754d25274c9b5866da127c7c7..0996b3be751a8c79b2c71b529e1bfe892417ef96 100644 (file)
--- a/mm/slub.c
+++ b/mm/slub.c
@@ -1631,7 +1631,8 @@ new_slab:
                c->page = new;
                goto load_freelist;
        }
                c->page = new;
                goto load_freelist;
        }
-       slab_out_of_memory(s, gfpflags, node);
+       if (!(gfpflags & __GFP_NOWARN) && printk_ratelimit())
+               slab_out_of_memory(s, gfpflags, node);
        return NULL;
 debug:
        if (!alloc_debug_processing(s, c->page, object, addr))
        return NULL;
 debug:
        if (!alloc_debug_processing(s, c->page, object, addr))