aboutsummaryrefslogtreecommitdiffstats
path: root/fs/lockd
diff options
context:
space:
mode:
authorStanislav Kinsbursky <skinsbursky@parallels.com>2012-09-18 13:37:18 +0400
committerBen Hutchings <ben@decadent.org.uk>2012-10-17 03:49:20 +0100
commit5ff39e971c87ea9f4c4c7b253898abafa960e32b (patch)
treeac70b6cbb067b6a5a560527a91dfcde88d0e0f70 /fs/lockd
parent5ed7d4de6853126fe9bb27d9cd443ee0a2d6e90a (diff)
downloadkernel_samsung_smdk4412-5ff39e971c87ea9f4c4c7b253898abafa960e32b.zip
kernel_samsung_smdk4412-5ff39e971c87ea9f4c4c7b253898abafa960e32b.tar.gz
kernel_samsung_smdk4412-5ff39e971c87ea9f4c4c7b253898abafa960e32b.tar.bz2
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: Ben Hutchings <ben@decadent.org.uk>
Diffstat (limited to 'fs/lockd')
-rw-r--r--fs/lockd/mon.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/fs/lockd/mon.c b/fs/lockd/mon.c
index 23d7451..df753a1 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);