From 7213d81cc84076674b4bcb3c3c4ea3c0e5431242 Mon Sep 17 00:00:00 2001 From: Christoph Lameter Date: Fri, 20 Aug 2010 12:37:17 -0500 Subject: [PATCH] --- yaml --- r: 215938 b: refs/heads/master c: c1d508365ea07f9f8849c7da5b02186601570f8b h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/mm/slub.c | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index 9d434c5c420b..18467a69302d 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: c016b0bdeee74a7fbe5179937c0d667eabcf379e +refs/heads/master: c1d508365ea07f9f8849c7da5b02186601570f8b diff --git a/trunk/mm/slub.c b/trunk/mm/slub.c index ca49d02b5ff8..6608f2bc310b 100644 --- a/trunk/mm/slub.c +++ b/trunk/mm/slub.c @@ -796,6 +796,7 @@ static void trace(struct kmem_cache *s, struct page *page, void *object, */ static inline int slab_pre_alloc_hook(struct kmem_cache *s, gfp_t flags) { + flags &= gfp_allowed_mask; lockdep_trace_alloc(flags); might_sleep_if(flags & __GFP_WAIT); @@ -804,6 +805,7 @@ static inline int slab_pre_alloc_hook(struct kmem_cache *s, gfp_t flags) static inline void slab_post_alloc_hook(struct kmem_cache *s, gfp_t flags, void *object) { + flags &= gfp_allowed_mask; kmemcheck_slab_alloc(s, flags, object, s->objsize); kmemleak_alloc_recursive(object, s->objsize, 1, s->flags, flags); } @@ -1677,6 +1679,7 @@ static void *__slab_alloc(struct kmem_cache *s, gfp_t gfpflags, int node, goto load_freelist; } + gfpflags &= gfp_allowed_mask; if (gfpflags & __GFP_WAIT) local_irq_enable(); @@ -1725,8 +1728,6 @@ static __always_inline void *slab_alloc(struct kmem_cache *s, struct kmem_cache_cpu *c; unsigned long flags; - gfpflags &= gfp_allowed_mask; - if (slab_pre_alloc_hook(s, gfpflags)) return NULL;