From 14cf2bbe77fbbaee8ee3211ec841a4f1ef3a8380 Mon Sep 17 00:00:00 2001 From: Soumya Koduri Date: Thu, 25 Jun 2015 19:49:59 +0530 Subject: protocol/server: Include a check to validate xprt->client rpc_transport entries(xprt) are added to the conf->xprt_list during client connection with the server. But the client object is created and assigned to that transport object only during GF_HANDSK_SETVOLUME. Hence till that period, there could be xprt entries in the xprt_list without client associated with it. Added a check to validate the client object during upcall notify. Change-Id: I11e2fcd8b0a67e35302ede478b777b72d1973456 BUG: 1235542 Signed-off-by: Soumya Koduri Reviewed-on: http://review.gluster.org/11411 Reviewed-by: Krishnan Parthasarathi Tested-by: NetBSD Build System Reviewed-by: Kaleb KEITHLEY --- xlators/protocol/server/src/server.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'xlators/protocol/server') diff --git a/xlators/protocol/server/src/server.c b/xlators/protocol/server/src/server.c index eed1d254a1d..dbafd8367c0 100644 --- a/xlators/protocol/server/src/server.c +++ b/xlators/protocol/server/src/server.c @@ -1154,7 +1154,9 @@ server_process_event_upcall (xlator_t *this, void *data) list_for_each_entry (xprt, &conf->xprt_list, list) { client = xprt->xl_private; - if (strcmp(client->client_uid, client_uid)) + /* 'client' is not atomically added during xprt entry + * addition to the list. */ + if (!client || strcmp(client->client_uid, client_uid)) continue; rpcsvc_request_submit(conf->rpc, xprt, -- cgit