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

From: Oleg Nesterov
Date: Thu Nov 10 2011 - 13:05:31 EST


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().

> @@ -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.

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/