Re: [RFC 1/2] proc: Return if nothing to unmount

From: Rik van Riel
Date: Sun Sep 10 2017 - 20:58:32 EST


On Sat, 2017-09-09 at 19:31 +0100, Al Viro wrote:
> On Sat, Sep 09, 2017 at 06:03:16PM +0530, Gargi Sharma wrote:
> > If a task exits before procfs is mounted, proc_flush_task_mnt will
> > be called with a NULL mnt parameter. In that case, not only is
> > there
> > nothing to unhash, but trying to do so will oops the kernel with a
> > null pointer dereference.
>
> You are misreading that sucker.ÂÂIt's about userland mounts, it's
> about
> the internal ones in pidns, for each pidns the process belongs to.
>
> IOW, what you are adding is dead code.ÂÂThe very first alloc_pid() in
> that pidns should've called pid_ns_prepare_proc(), which creates that
> vfsmount.

Looking at the code (now that I am home, and no longer
reading this email on my phone), I see the cause of this
problem.

A previous version of Gargi's code had RESERVED_PIDS as
the lower bound for idr_alloc_cyclic, even on the very
first PID allocation cycle in a PID namespace.

With the code changed to have 1 as the lower bound during
the first allocation cycle, pid_ns_prepare_proc() should
be called correctly, and things should work as expected.

Gargi, can you drop this patch 1/2, and make sure the code
still works fine?

--
All Rights Reversed.

Attachment: signature.asc
Description: This is a digitally signed message part