Re: [PATCH 1/3] pids: Make alloc_pid return error

From: Pavel Emelyanov
Date: Fri Nov 11 2011 - 05:02:15 EST


On 11/10/2011 10:00 PM, Oleg Nesterov wrote:
> On 11/10, Pavel Emelyanov wrote:
>>
>> @@ -281,7 +281,7 @@ struct pid *alloc_pid(struct pid_namespace *ns)
>> {
>> struct pid *pid;
>> enum pid_type type;
>> - int i, nr;
>> + int i, nr = -ENOMEM;
>> struct pid_namespace *tmp;
>> struct upid *upid;
>
> This doesn't look right at first glance... I mean, if
> the first kmem_cache_alloc(ns->pid_cachep) fails, this -ENOMEM
> won't be returned as ERR_PTR().

Yikes! Will fix, thanks!

>> @@ -321,7 +321,7 @@ out_free:
>> free_pidmap(pid->numbers + i);
>>
>> kmem_cache_free(ns->pid_cachep, pid);
>> - pid = NULL;
>> + pid = ERR_PTR(nr);
>> goto out;
>
> Off-topic, but with or withoit this patch this "goto out" looks
> strange imho. Why not a simple
>
> - pid = NULL;
> - goto out;
> + return ERR_PTR(nr);
>
> instead? But this is minor and subjective, I won't insist.

Hm... OK, I will brush up the error paths a little bit more :)

> Oleg.
>
> .
>

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/