Whamcloud - gitweb
LU-12991 lnet: fix rspt counter 95/36895/3
authorAlexey Lyashkov <c17817@cray.com>
Fri, 29 Nov 2019 10:42:59 +0000 (13:42 +0300)
committerOleg Drokin <green@whamcloud.com>
Fri, 20 Dec 2019 03:27:19 +0000 (03:27 +0000)
rsp entries must freed via lnet_rspt_free function to avoid counter
leak. handle NULL allocation properly.

Test-parameters: trivial

Cray-bug-id: LUS-8189
Change-Id: I7630d375387593e28bfbe2c4a3ea3712a239f64f
Signed-off-by: Alexey Lyashkov <c17817@cray.com>
Reviewed-on: https://review.whamcloud.com/36895
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Alexandr Boyko <c17825@cray.com>
Reviewed-by: Chris Horn <hornc@cray.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
lnet/include/lnet/lib-lnet.h
lnet/lnet/lib-move.c

index dbbc287..413813a 100644 (file)
@@ -500,9 +500,11 @@ lnet_rspt_alloc(int cpt)
 {
        struct lnet_rsp_tracker *rspt;
        LIBCFS_ALLOC(rspt, sizeof(*rspt));
-       lnet_net_lock(cpt);
-       the_lnet.ln_counters[cpt]->lct_health.lch_rst_alloc++;
-       lnet_net_unlock(cpt);
+       if (rspt) {
+               lnet_net_lock(cpt);
+               the_lnet.ln_counters[cpt]->lct_health.lch_rst_alloc++;
+               lnet_net_unlock(cpt);
+       }
        return rspt;
 }
 
index 5ac7231..9f1a580 100644 (file)
@@ -4674,7 +4674,7 @@ lnet_attach_rsp_tracker(struct lnet_rsp_tracker *rspt, int cpt,
                 * we already have an rspt attached to the md, so we'll
                 * update the deadline on that one.
                 */
-               LIBCFS_FREE(rspt, sizeof(*rspt));
+               lnet_rspt_free(rspt, cpt);
                new_entry = false;
        } else {
                /* new md */
@@ -4795,7 +4795,7 @@ LNetPut(lnet_nid_t self, struct lnet_handle_md mdh, enum lnet_ack_req ack,
                               md->md_me->me_portal);
                lnet_res_unlock(cpt);
 
-               LIBCFS_FREE(rspt, sizeof(*rspt));
+               lnet_rspt_free(rspt, cpt);
                lnet_msg_free(msg);
                return -ENOENT;
        }
@@ -5022,7 +5022,7 @@ LNetGet(lnet_nid_t self, struct lnet_handle_md mdh,
                lnet_res_unlock(cpt);
 
                lnet_msg_free(msg);
-               LIBCFS_FREE(rspt, sizeof(*rspt));
+               lnet_rspt_free(rspt, cpt);
                return -ENOENT;
        }