From 8a1fa6e278e7be66e2778b1fc01f9af1181b11d6 Mon Sep 17 00:00:00 2001 From: Niels de Vos Date: Fri, 13 Jan 2017 14:02:45 +0100 Subject: nfs/nlm: ignore notify when there is no matching rpc request In certain (unclear) occasions it seems to happen that there are notifications sent to the Gluster/NFS NLM service, but no call-state can be found. Instead of segfaulting, log an error but keep on running. Cherry picked from commit e997d752ba08f80b1b00d2c0035874befafe5200: > Change-Id: I0f186e56e46a86ca40314d230c1cc7719c61f0b5 > BUG: 1381970 > Signed-off-by: Niels de Vos > Reviewed-on: https://review.gluster.org/17185 > Smoke: Gluster Build System > NetBSD-regression: NetBSD Build System > CentOS-regression: Gluster Build System > Reviewed-by: soumya k > Reviewed-by: jiffin tony Thottan > Reviewed-by: Jeff Darcy Change-Id: I0f186e56e46a86ca40314d230c1cc7719c61f0b5 BUG: 1450378 Signed-off-by: Niels de Vos Reviewed-on: https://review.gluster.org/17270 Smoke: Gluster Build System NetBSD-regression: NetBSD Build System CentOS-regression: Gluster Build System Reviewed-by: Raghavendra Talur --- xlators/nfs/server/src/nlm4.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/xlators/nfs/server/src/nlm4.c b/xlators/nfs/server/src/nlm4.c index 1675116c461..0e4a4d824fa 100644 --- a/xlators/nfs/server/src/nlm4.c +++ b/xlators/nfs/server/src/nlm4.c @@ -923,10 +923,16 @@ nlm_rpcclnt_notify (struct rpc_clnt *rpc_clnt, void *mydata, nfs3_call_state_t *cs = NULL; cs = mydata; - caller_name = cs->args.nlm4_lockargs.alock.caller_name; switch (fn) { case RPC_CLNT_CONNECT: + if (!cs->req) { + gf_msg (GF_NLM, GF_LOG_ERROR, EINVAL, + NFS_MSG_RPC_CLNT_ERROR, "Spurious notify?!"); + goto err; + } + + caller_name = cs->args.nlm4_lockargs.alock.caller_name; ret = nlm_set_rpc_clnt (rpc_clnt, caller_name); if (ret == -1) { gf_msg (GF_NLM, GF_LOG_ERROR, 0, -- cgit