Found by Fedora's static analysis [1]. [1] https://openscanhub.fedoraproject.org/task/51915/log/device-mapper-multipath-0.11.1-1.fc43/scan-results.html
Signed-off-by: Martin Wilck <mwi...@suse.com> --- libmpathpersist/mpath_persist_int.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/libmpathpersist/mpath_persist_int.c b/libmpathpersist/mpath_persist_int.c index 0576429..0c5cd60 100644 --- a/libmpathpersist/mpath_persist_int.c +++ b/libmpathpersist/mpath_persist_int.c @@ -450,10 +450,10 @@ static int mpath_prout_rel(struct multipath *mpp,int rq_servact, int rq_scope, int count = 0; int status = MPATH_PR_SUCCESS; struct prin_resp resp; - struct prout_param_descriptor *pamp; + struct prout_param_descriptor *pamp = NULL; struct prin_resp *pr_buff; int length; - struct transportid *pptr; + struct transportid *pptr = NULL; if (!mpp) return MPATH_PR_DMMP_ERROR; @@ -560,7 +560,7 @@ static int mpath_prout_rel(struct multipath *mpp,int rq_servact, int rq_scope, pamp = (struct prout_param_descriptor *)malloc (length); if (!pamp){ condlog (0, "%s: failed to alloc pr out parameter.", mpp->wwid); - goto out1; + goto out; } memset(pamp, 0, length); @@ -570,6 +570,7 @@ static int mpath_prout_rel(struct multipath *mpp,int rq_servact, int rq_scope, condlog (0, "%s: failed to alloc pr out transportid.", mpp->wwid); goto out1; } + pptr = pamp->trnptid_list[0]; if (get_be64(mpp->reservation_key)){ memcpy (pamp->key, &mpp->reservation_key, 8); @@ -581,11 +582,10 @@ static int mpath_prout_rel(struct multipath *mpp,int rq_servact, int rq_scope, if (status) { condlog(0, "%s: failed to send CLEAR_SA", mpp->wwid); - goto out1; + goto out2; } pamp->num_transportid = 1; - pptr=pamp->trnptid_list[0]; for (i = 0; i < num; i++){ if (get_be64(mpp->reservation_key) && @@ -629,7 +629,7 @@ static int mpath_prout_rel(struct multipath *mpp,int rq_servact, int rq_scope, status = mpath_prout_reg(mpp, MPATH_PROUT_REG_SA, rq_scope, rq_type, pamp, noisy); } - +out2: free(pptr); out1: free (pamp); -- 2.49.0