Whamcloud - gitweb
LU-8001 nodemap: fix null deref when reclassifying 95/19595/2
authorKit Westneat <kit.westneat@gmail.com>
Fri, 15 Apr 2016 03:05:58 +0000 (23:05 -0400)
committerOleg Drokin <oleg.drokin@intel.com>
Fri, 22 Apr 2016 15:47:37 +0000 (15:47 +0000)
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 <kit.westneat@gmail.com>
Change-Id: I795afdac3b388e883bafe5a79c8237794bc01ef6
Reviewed-on: http://review.whamcloud.com/19595
Tested-by: Jenkins
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: Andreas Dilger <andreas.dilger@intel.com>
Reviewed-by: James Simmons <uja.ornl@yahoo.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
lustre/ptlrpc/nodemap_member.c

index d4ffc23..7ec2fd6 100644 (file)
@@ -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