Re: [ 02/37] lockd: use rpc clients cl_nodename for id encoding

From: Ben Hutchings
Date: Mon Oct 22 2012 - 21:36:37 EST


On Mon, 2012-10-22 at 17:02 +0000, Myklebust, Trond wrote:
> On Sun, 2012-10-21 at 09:26 -0700, Greg Kroah-Hartman wrote:
> > On Sat, Oct 20, 2012 at 12:15:18AM +0100, Ben Hutchings wrote:
> > > On Thu, Oct 18, 2012 at 08:16:25PM -0700, Greg Kroah-Hartman wrote:
> > > > 3.0-stable review patch. If anyone has any objections, please let me know.
> > > >
> > > > ------------------
> > > >
> > > > From: Stanislav Kinsbursky <skinsbursky@xxxxxxxxxxxxx>
> > > >
> > > > commit 303a7ce92064c285a04c870f2dc0192fdb2968cb upstream.
> > > >
> > > > Taking hostname from uts namespace if not safe, because this cuold be
> > > > performind during umount operation on child reaper death. And in this case
> > > > current->nsproxy is NULL already.
> > >
> > > In this case (3.0.y) you haven't included the following change
> > > (commit cb7323fffa85 'lockd: create and use per-net NSM RPC clients on
> > > MON/UNMON requests') that makes lockd actually use cl_nodename. I
> > > think this patch alone won't fix the bug, as nsm_args::nodename can
> > > end up pointing to freed memory.
> > >
> > > (I also wonder whether clients should really be per-net or per UTS
> > > namespace, and whether those should be orthogonal namespaces at all.)
> >
> > Hm, Trond, should I also include the other commit above in the next
> > 3.0-stable release?
> >
> > Or should this one be dropped?
>
> Hi Greg,
>
> Applying this patch shouldn't be harmful, but since it isn't actually
> fixing a problem (there being no net-namespace code in Linux-3.0), I'd
> suggest just dropping it.

If I understand rightly:
1. Prior to introduction of the per-netns clients, nsm_monitor() and
nsm_unmonitor() are called from a kthread which runs in the initial net
and utsname namespace.
2. Therefore, in nsm_mon_unmon(), current->nsproxy always refers to the
initial namespaces and is never NULL.
3. The per-netns clients were introduced in 3.5, so only 3.6.y needed
fixing.
4. However, this one change is harmless for earlier versions.

(I think that point 1 is not quite true in that nsm_unmonitor() can also
be called on module removal, potentially in something other than the
initial utsname namespace. But it still won't result in a crash, and
it's hardly worth worrying about.)

Ben.

--
Ben Hutchings
Humour is the best antidote to reality.

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