[lkml]   [2008]   [Sep]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
SubjectRe: [RFC][PATCH] sunrpc: fix oops in rpc_create() when the mount namespace is unshared
Quoting Cedric Le Goater (
> Serge E. Hallyn wrote:
> > Quoting Cedric Le Goater (
> >> On a system with nfs mounts, if a task unshares its mount namespace,
> >> a oops can occur when the system is rebooted if the task is the last
> >> to unreference the nfs mount. It will try to create a rpc request
> >> using utsname() which has been invalidated by free_nsproxy().
> >>
> >> The patch fixes the issue by using the global init_utsname() but at
> >> the same time, it breaks the capability of identifying rpc clients
> >> per uts namespace.
> >>
> >> Any better suggestions ?
> >
> > But the utsname gets freed after the mnt_ns, so the analysis seems
> > wrong somehow.
> yes but switch_task_namespaces() assigns ->nsproxy to NULL. the result
> is the same.
> > I trust addr2line or whatever verified that rpc_create+0x332/0x42f is
> > exactly at the call to utsname()?
> yes. it points to net/sunrpc/clnt.c:216
> clnt->cl_nodelen = strlen(utsname()->nodename);

Pavel, at the mini-summit you mentioned sunrpc transports as one
example of the mini-namespaces openvz currently implements. We
then apparently went off on a bit of a tangent
after Dave asked for a list of mini-namespaces openvz implements.

What exactly is openvz doing with sunrpc transports, and would it
be a better solution to this problem?


 \ /
  Last update: 2008-09-08 17:47    [W:0.062 / U:0.372 seconds]
©2003-2018 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site