X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=mm%2Fkmemleak.c;h=8bf765c4f58d03922adf1f7a100679fe05c65d7d;hb=bf699c9bac124f0a095d8ef06f2d6b219300a822;hp=4ea4510e2996cb5dab18852cb1f5e285f7fbd81e;hpb=d2a764dd8e2c70254bf78d5e2d3e9cbe8b34e470;p=~andy%2Flinux diff --git a/mm/kmemleak.c b/mm/kmemleak.c index 4ea4510e299..8bf765c4f58 100644 --- a/mm/kmemleak.c +++ b/mm/kmemleak.c @@ -833,12 +833,15 @@ static void early_alloc(struct early_log *log) */ rcu_read_lock(); object = create_object((unsigned long)log->ptr, log->size, - log->min_count, GFP_KERNEL); + log->min_count, GFP_ATOMIC); + if (!object) + goto out; spin_lock_irqsave(&object->lock, flags); for (i = 0; i < log->trace_len; i++) object->trace[i] = log->trace[i]; object->trace_len = log->trace_len; spin_unlock_irqrestore(&object->lock, flags); +out: rcu_read_unlock(); }