X-Git-Url: http://ftp.safe.ca/?a=blobdiff_plain;f=mm%2Fkmemleak.c;h=13f33b3081ec2794afdae74d9071a88ec6aa9df3;hb=135d5655dc58a24eda64e3f6c192d7d605e10050;hp=4ea4510e2996cb5dab18852cb1f5e285f7fbd81e;hpb=addd72c1a917091f4bb5e699e307c4c4553f6fd3;p=safe%2Fjmp%2Flinux-2.6 diff --git a/mm/kmemleak.c b/mm/kmemleak.c index 4ea4510..13f33b3 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(); } @@ -1047,8 +1050,8 @@ static void scan_object(struct kmemleak_object *object) unsigned long flags; /* - * Once the object->lock is aquired, the corresponding memory block - * cannot be freed (the same lock is aquired in delete_object). + * Once the object->lock is acquired, the corresponding memory block + * cannot be freed (the same lock is acquired in delete_object). */ spin_lock_irqsave(&object->lock, flags); if (object->flags & OBJECT_NO_SCAN)