diff options
author | Stanislav Kinsbursky <skinsbursky@parallels.com> | 2012-09-18 13:37:18 +0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2012-10-21 09:17:09 -0700 |
commit | 12d63702c53bc2230dfc997e91ca891f39cb6446 (patch) | |
tree | 37b77cd1e7ee0ee02a375d43403c5672f2230183 /fs | |
parent | d1b9810beb86726a50152410e7fe7c17d5217bdb (diff) | |
download | lwn-12d63702c53bc2230dfc997e91ca891f39cb6446.tar.gz lwn-12d63702c53bc2230dfc997e91ca891f39cb6446.zip |
lockd: use rpc client's cl_nodename for id encoding
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.
Signed-off-by: Stanislav Kinsbursky <skinsbursky@parallels.com>
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'fs')
-rw-r--r-- | fs/lockd/mon.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/fs/lockd/mon.c b/fs/lockd/mon.c index 23d7451b2938..df753a1cb4b6 100644 --- a/fs/lockd/mon.c +++ b/fs/lockd/mon.c @@ -40,6 +40,7 @@ struct nsm_args { u32 proc; char *mon_name; + char *nodename; }; struct nsm_res { @@ -93,6 +94,7 @@ static int nsm_mon_unmon(struct nsm_handle *nsm, u32 proc, struct nsm_res *res) .vers = 3, .proc = NLMPROC_NSM_NOTIFY, .mon_name = nsm->sm_mon_name, + .nodename = utsname()->nodename, }; struct rpc_message msg = { .rpc_argp = &args, @@ -429,7 +431,7 @@ static void encode_my_id(struct xdr_stream *xdr, const struct nsm_args *argp) { __be32 *p; - encode_nsm_string(xdr, utsname()->nodename); + encode_nsm_string(xdr, argp->nodename); p = xdr_reserve_space(xdr, 4 + 4 + 4); *p++ = cpu_to_be32(argp->prog); *p++ = cpu_to_be32(argp->vers); |