diff options
author | Trond Myklebust <Trond.Myklebust@netapp.com> | 2013-08-05 12:06:12 -0400 |
---|---|---|
committer | Trond Myklebust <Trond.Myklebust@netapp.com> | 2013-08-05 15:03:46 -0400 |
commit | 9a1b6bf818e74bb7aabaecb59492b739f2f4d742 (patch) | |
tree | d0ae011473af73d2a8789b0fb557a8ab52db7aed /fs/mbcache.c | |
parent | c095ba7224d8edc71dcef0d655911399a8bd4a3f (diff) | |
download | kernel-common-9a1b6bf818e74bb7aabaecb59492b739f2f4d742.tar.gz kernel-common-9a1b6bf818e74bb7aabaecb59492b739f2f4d742.tar.bz2 kernel-common-9a1b6bf818e74bb7aabaecb59492b739f2f4d742.zip |
LOCKD: Don't call utsname()->nodename from nlmclnt_setlockargs
Firstly, nlmclnt_setlockargs can be called from a reclaimer thread, in
which case we're in entirely the wrong namespace.
Secondly, commit 8aac62706adaaf0fab02c4327761561c8bda9448 (move
exit_task_namespaces() outside of exit_notify()) now means that
exit_task_work() is called after exit_task_namespaces(), which
triggers an Oops when we're freeing up the locks.
Fix this by ensuring that we initialise the nlm_host's rpc_client at mount
time, so that the cl_nodename field is initialised to the value of
utsname()->nodename that the net namespace uses. Then replace the
lockd callers of utsname()->nodename.
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Cc: Toralf Förster <toralf.foerster@gmx.de>
Cc: Oleg Nesterov <oleg@redhat.com>
Cc: Nix <nix@esperi.org.uk>
Cc: Jeff Layton <jlayton@redhat.com>
Cc: stable@vger.kernel.org # 3.10.x
Diffstat (limited to 'fs/mbcache.c')
0 files changed, 0 insertions, 0 deletions