From: Kit Westneat Date: Fri, 15 Apr 2016 03:05:58 +0000 (-0400) Subject: LU-8001 nodemap: fix null deref when reclassifying X-Git-Tag: 2.8.53~53 X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=commitdiff_plain;h=475576e74ec315e316fe6528c97c437511b18872 LU-8001 nodemap: fix null deref when reclassifying There are some situations in which an export's connection can be NULL. This patch adds a NULL check before dereferencing in nm_member_reclassify_nodemap. If the connection is null, keep export in current nodemap since it should get reclassified on reconnect. Signed-off-by: Kit Westneat Change-Id: I795afdac3b388e883bafe5a79c8237794bc01ef6 Reviewed-on: http://review.whamcloud.com/19595 Tested-by: Jenkins Tested-by: Maloo Reviewed-by: Andreas Dilger Reviewed-by: James Simmons Reviewed-by: Oleg Drokin --- diff --git a/lustre/ptlrpc/nodemap_member.c b/lustre/ptlrpc/nodemap_member.c index d4ffc23..7ec2fd6 100644 --- a/lustre/ptlrpc/nodemap_member.c +++ b/lustre/ptlrpc/nodemap_member.c @@ -147,10 +147,15 @@ void nm_member_reclassify_nodemap(struct lu_nodemap *nodemap) mutex_lock(&nodemap->nm_member_list_lock); list_for_each_entry_safe(exp, tmp, &nodemap->nm_member_list, exp_target_data.ted_nodemap_member) { - lnet_nid_t nid = exp->exp_connection->c_peer.nid; + struct ptlrpc_connection *conn = exp->exp_connection; + + /* if no conn assigned to this exp, reconnect will reclassify */ + if (conn) + /* nodemap_classify_nid requires nmc_range_tree_lock */ + new_nodemap = nodemap_classify_nid(conn->c_peer.nid); + else + continue; - /* nodemap_classify_nid requires nmc_range_tree_lock */ - new_nodemap = nodemap_classify_nid(nid); if (new_nodemap != nodemap) { /* don't use member_del because ted_nodemap * should never be null