[Pkg-ofed-commits] [infinipath-psm] 05/11: Fix uninitialized and check for invalid values found by static analyzer.

Ana Beatriz Guerrero López ana at moszumanska.debian.org
Sun Apr 3 20:04:11 UTC 2016


This is an automated email from the git hooks/post-receive script.

ana pushed a commit to branch master
in repository infinipath-psm.

commit 0fcd76e9d514d89c91f06ddd984cb994e20f7f3e
Author: Henry Estela <henry.r.estela at intel.com>
Date:   Wed Jan 13 14:09:07 2016 -0800

    Fix uninitialized and check for invalid values found by static analyzer.
---
 ipath/ipath_proto.c          |  2 +-
 ipath/ipath_service.c        |  2 +-
 psm_diags.c                  |  5 ++++-
 psm_ep.c                     |  2 +-
 psm_stats.c                  | 10 +++++-----
 ptl_am/am_reqrep.c           |  4 ++--
 ptl_am/am_reqrep_shmem.c     |  4 ++--
 ptl_am/ptl.c                 |  4 ++--
 ptl_ips/ips_proto.h          |  2 +-
 ptl_ips/ips_proto_am.c       |  2 +-
 ptl_ips/ips_proto_expected.c | 11 ++++++-----
 ptl_ips/ips_proto_help.h     |  2 +-
 ptl_ips/ips_proto_recv.c     |  2 +-
 13 files changed, 28 insertions(+), 24 deletions(-)

diff --git a/ipath/ipath_proto.c b/ipath/ipath_proto.c
index 05f8913..5f9365f 100644
--- a/ipath/ipath_proto.c
+++ b/ipath/ipath_proto.c
@@ -460,7 +460,7 @@ struct _ipath_ctrl *ipath_userinit(int fd, struct ipath_user_info *u,
     _IPATH_DBG("chipstatus=0x%llx\n",
 	       (unsigned long long)*spctrl->__ipath_spi_status);
 
-    if(u->spu_subcontext_cnt) {
+    if(u->spu_subcontext_cnt > 0) {
 	unsigned num_subcontexts = u->spu_subcontext_cnt;
 	size_t size;
 	int i;
diff --git a/ipath/ipath_service.c b/ipath/ipath_service.c
index 4befdbb..f25b09b 100644
--- a/ipath/ipath_service.c
+++ b/ipath/ipath_service.c
@@ -718,7 +718,7 @@ ipath_get_port_gid(int unit, int port, uint64_t *hi, uint64_t *lo)
 		       unit, port, strerror(errno));
     }
     else {
-        int gid[8];
+        unsigned int gid[8];
         if (sscanf(gid_str, "%4x:%4x:%4x:%4x:%4x:%4x:%4x:%4x", 
 		   &gid[0], &gid[1], &gid[2], &gid[3],
 		   &gid[4], &gid[5], &gid[6], &gid[7]) != 8) {
diff --git a/psm_diags.c b/psm_diags.c
index 37c198e..b6fedd9 100644
--- a/psm_diags.c
+++ b/psm_diags.c
@@ -289,8 +289,11 @@ memcpy_check_size (memcpy_fn_t fn, int *p, int *f, size_t n)
   else {
     void *src_p, *dst_p;
     if (posix_memalign(&src_p, 64, size) != 0 ||
-        posix_memalign(&dst_p, 64, size) != 0) 
+        posix_memalign(&dst_p, 64, size) != 0) {
+      if (src_p) psmi_free(src_p);
+      if (dst_p) psmi_free(dst_p);
       return -1;
+    }
     else {
 	src = (uint8_t *) src_p;
 	dst = (uint8_t *) dst_p;
diff --git a/psm_ep.c b/psm_ep.c
index 4a1bdf0..6857895 100644
--- a/psm_ep.c
+++ b/psm_ep.c
@@ -1394,7 +1394,7 @@ psmi_parse_devices(int devices[PTL_MAX_INIT], const char *devstring)
 	}
     }
     if (b_new != devstr)  /* we parsed something, remove trailing comma */
-	*(b_new - 1) = '\0';
+	b_new[strlen(b_new) - 1] = '\0';
 
     _IPATH_PRDBG("PSM Device allocation order: %s\n", devstr);
 fail:
diff --git a/psm_stats.c b/psm_stats.c
index 50044a4..8b338ae 100644
--- a/psm_stats.c
+++ b/psm_stats.c
@@ -566,15 +566,15 @@ stats_register_ipath_counters(psm_ep_t ep)
 			     entries,
 			     nc+npc,
 			     ep);
-    return;
 
 bail:
     if (cnames != NULL)
-	    infinipath_release_names(cnames);
+	    psmi_free(cnames);
     if (pcnames != NULL)
-	    infinipath_release_names(pcnames);
+	    psmi_free(pcnames);
     if (entries != NULL)
 	    psmi_free(entries);
+    return;
 }
 
 static 
@@ -604,13 +604,13 @@ stats_register_ipath_stats(psm_ep_t ep)
 			     entries,
 			     ns,
 			     ep);
-    return;
 
 bail:
     if (snames != NULL)
-	    infinipath_release_names(snames);
+	    psmi_free(snames);
     if (entries != NULL)
 	    psmi_free(entries);
+    return;
 }
 
 #undef _SDECL
diff --git a/ptl_am/am_reqrep.c b/ptl_am/am_reqrep.c
index 3dc2956..192c040 100644
--- a/ptl_am/am_reqrep.c
+++ b/ptl_am/am_reqrep.c
@@ -44,7 +44,7 @@ psmi_amsh_am_short_request(psm_epaddr_t epaddr,
 			   psm_am_completion_fn_t completion_fn,
 			   void *completion_ctxt)
 {
-  psm_amarg_t req_args[NSHORT_ARGS];
+  psm_amarg_t req_args[NSHORT_ARGS] = {};
 
   /* All sends are synchronous. Ignore PSM_AM_FLAG_ASYNC. 
    * TODO: Treat PSM_AM_FLAG_NOREPLY as "advisory". This was mainly
@@ -76,7 +76,7 @@ psmi_amsh_am_short_reply(psm_am_token_t tok,
 			 psm_am_completion_fn_t completion_fn,
 			 void *completion_ctxt)
 {
-  psm_amarg_t rep_args[NSHORT_ARGS];
+  psm_amarg_t rep_args[NSHORT_ARGS] = {};
 
   /* For now less than NSHORT_ARGS-1. We use the first arg to carry the handler
    * index.
diff --git a/ptl_am/am_reqrep_shmem.c b/ptl_am/am_reqrep_shmem.c
index ff8cea8..9ef9803 100644
--- a/ptl_am/am_reqrep_shmem.c
+++ b/ptl_am/am_reqrep_shmem.c
@@ -2679,7 +2679,7 @@ psm_error_t
 amsh_mq_rndv(ptl_t *ptl, psm_mq_t mq, psm_mq_req_t req,
              psm_epaddr_t epaddr, uint64_t tag, const void *buf, uint32_t len)
 {
-    psm_amarg_t args[5];
+    psm_amarg_t args[5] = {};
     psm_error_t err = PSM_OK;
 
     args[0].u32w0 = MQ_MSG_RTS;
@@ -2744,7 +2744,7 @@ psm_error_t
 amsh_mq_send_inner(psm_mq_t mq, psm_mq_req_t req, psm_epaddr_t epaddr, 
                    uint32_t flags, uint64_t tag, const void *ubuf, uint32_t len))
 {
-    psm_amarg_t args[3];
+    psm_amarg_t args[3] = {};
     psm_error_t err = PSM_OK;
     int is_blocking = (req == NULL);
 
diff --git a/ptl_am/ptl.c b/ptl_am/ptl.c
index 30f38c4..8638652 100644
--- a/ptl_am/ptl.c
+++ b/ptl_am/ptl.c
@@ -43,7 +43,7 @@ static
 psm_error_t
 ptl_handle_rtsmatch_request(psm_mq_req_t req, int was_posted, amsh_am_token_t *tok)
 {
-    psm_amarg_t	args[5];
+    psm_amarg_t	args[5] = {};
     psm_epaddr_t epaddr = req->rts_peer;
     ptl_t *ptl = epaddr->ptl;
     int pid = 0;
@@ -232,7 +232,7 @@ psmi_am_mq_handler_rtsmatch(void *toki, psm_amarg_t *args, int narg, void *buf,
     void *dest = (void *)(uintptr_t) args[2].u64w0;
     uint32_t msglen = args[3].u32w0;
     int pid = 0;
-    psm_amarg_t rarg[1];
+    psm_amarg_t rarg[1] = {};
 
     _IPATH_VDBG("[rndv][send] req=%p dest_req=%p src=%p dest=%p len=%d\n",
 		    sreq, (void*)(uintptr_t)args[1].u64w0, sreq->buf, dest, msglen);
diff --git a/ptl_ips/ips_proto.h b/ptl_ips/ips_proto.h
index ca79606..12f55f1 100644
--- a/ptl_ips/ips_proto.h
+++ b/ptl_ips/ips_proto.h
@@ -423,7 +423,7 @@ struct ptl_epaddr_stats {
     (((uint16_t)flowindex)&0x7) )
 
 #define IPS_FLOWID_GET_PROTO(flow)    (((flow)>>3)&0x7)
-#define IPS_FLOWID_GET_INDEX(flow)    ((flow)&0x7)
+#define IPS_FLOWID_GET_INDEX(flow)    ((flow) % 4)
 
 #define IPS_FLOWID2INDEX(flow)	\
    ((flow)&0x7)
diff --git a/ptl_ips/ips_proto_am.c b/ptl_ips/ips_proto_am.c
index 731c023..9f2bf18 100644
--- a/ptl_ips/ips_proto_am.c
+++ b/ptl_ips/ips_proto_am.c
@@ -298,7 +298,7 @@ ips_am_run_handler(struct ips_am_token *tok,
     else {
 	/* Arguments and payload may split across header/eager_payload
 	 * boundaries. */
-	psm_amarg_t args[8];
+	psm_amarg_t args[8] = {};
 	int i;
 	uint64_t *payload = (uint64_t *) ips_recvhdrq_event_payload(rcv_ev);
 	uint32_t paylen = ips_recvhdrq_event_paylen(rcv_ev);
diff --git a/ptl_ips/ips_proto_expected.c b/ptl_ips/ips_proto_expected.c
index 5a86e06..e043c30 100644
--- a/ptl_ips/ips_proto_expected.c
+++ b/ptl_ips/ips_proto_expected.c
@@ -1037,7 +1037,7 @@ ips_tid_send_tid_release_msg(struct ips_tid_send_desc *tidsendc)
   psm_error_t err;
   struct ips_protoexp *protoexp = tidsendc->protoexp;
   psm_mq_req_t req = tidsendc->mqreq;
-  ptl_arg_t desc_id[3];
+  ptl_arg_t desc_id[3] = {};
   uint64_t t_cyc;
   
   desc_id[0] = tidsendc->tid_list.tsess_descid;
@@ -1121,7 +1121,7 @@ ips_tid_release_timer_callback(struct psmi_timer *timer, uint64_t current)
     struct ips_protoexp *protoexp = tidsendc->protoexp;
     uint64_t t_cyc;
     psm_error_t err;
-    ptl_arg_t desc_id[3];
+    ptl_arg_t desc_id[3] = {};
 
     /* 0 contain's the receiver's desc_id, 1 contains the sender's desc_id */
     desc_id[0] = tidsendc->tid_list.tsess_descid;
@@ -2358,11 +2358,11 @@ ips_protoexp_handle_tf_seqerr(const struct ips_recvhdrq_event *rcv_ev)
   struct ips_protoexp *protoexp = rcv_ev->proto->protoexp;
   struct ips_message_header *p_hdr = rcv_ev->p_hdr;
   struct ips_tid_recv_desc *tidrecvc;
-  ptl_arg_t desc_id = rcv_ev->p_hdr->data[0];
-  ptl_arg_t send_descid = rcv_ev->p_hdr->data[1];
+  ptl_arg_t desc_id = rcv_ev->p_hdr->hdr_data[0];
+  ptl_arg_t send_descid = rcv_ev->p_hdr->hdr_data[1];
   ptl_arg_t desc_tidrecvc;
   psmi_seqnum_t sequence_num;
-  ptl_arg_t args[3];
+  ptl_arg_t args[3] = {};
   psm_error_t err;
 
   psmi_assert_always(protoexp != NULL);
@@ -2457,6 +2457,7 @@ ips_protoexp_handle_tf_generr(const struct ips_recvhdrq_event *rcv_ev)
   struct ips_message_header *p_hdr = rcv_ev->p_hdr;
   int tid = IPS_HDR_TID(p_hdr);
   struct ips_tid_recv_desc *tidrecvc;
+  psmi_assert(rcv_ev->p_hdr->data != NULL);
   ptl_arg_t desc_id = rcv_ev->p_hdr->data[0];
   ptl_arg_t desc_tidrecvc;
 
diff --git a/ptl_ips/ips_proto_help.h b/ptl_ips/ips_proto_help.h
index 28d80f3..3d83a62 100644
--- a/ptl_ips/ips_proto_help.h
+++ b/ptl_ips/ips_proto_help.h
@@ -79,7 +79,7 @@ ips_flow_gen_ackflags(ips_scb_t *scb, struct ips_flow *flow))
 PSMI_ALWAYS_INLINE(
 ptl_epaddr_flow_t ips_proto_flowid(struct ips_message_header *p_hdr))
 {
-  ptl_epaddr_flow_t flowidx = IPS_FLOWID_GET_INDEX(p_hdr->flowid);
+  ptl_epaddr_flow_t flowidx = IPS_FLOWID2INDEX(p_hdr->flowid);
   psmi_assert(flowidx < EP_FLOW_LAST);
   return flowidx;
 }
diff --git a/ptl_ips/ips_proto_recv.c b/ptl_ips/ips_proto_recv.c
index d865ef4..572c522 100644
--- a/ptl_ips/ips_proto_recv.c
+++ b/ptl_ips/ips_proto_recv.c
@@ -789,7 +789,7 @@ _process_err_chk_gen(ips_epaddr_t *ipsaddr, struct ips_message_header *p_hdr)
   ptl_arg_t desc_id = p_hdr->data[0];
   ptl_arg_t send_desc_id = p_hdr->data[1];
   ptl_arg_t desc_tidrecvc;
-  ptl_arg_t args[3];
+  ptl_arg_t args[3] = {};
   int16_t seq_off;
   uint8_t ack_type;
   

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-ofed/infinipath-psm.git



More information about the Pkg-ofed-commits mailing list