Messages in this thread | | | Date | Sat, 6 Oct 2012 21:14:00 +0200 | From | Oleg Nesterov <> | Subject | Re: [PATCH] pidns: remove recursion from free_pid_ns (v2) |
| |
On 10/06, Andrew Vagin wrote: > > --- a/kernel/pid_namespace.c > +++ b/kernel/pid_namespace.c > @@ -138,11 +138,20 @@ void free_pid_ns(struct kref *kref) > > ns = container_of(kref, struct pid_namespace, kref); > > - parent = ns->parent; > - destroy_pid_namespace(ns); > + while (1) { > > - if (parent != NULL) > - put_pid_ns(parent); > + parent = ns->parent; > + destroy_pid_namespace(ns); > + > + if (parent == &init_pid_ns) > + break; > + > + /* kref_put cannot be used for avoiding recursion */ > + if (__kref_put(&parent->kref) == 0) > + break; > + > + ns = parent; > + } > }
Reviewed-by: Oleg Nesterov <oleg@redhat.com>
But, Andrew... please note that this adds the unnecessary empty line after "while (1)". The coding style police will complain anyway, so I'd suggest you to send v3 ;)
Oleg.
| |