Browse Source

RDMA/amso1100: Add check for NULL reply_msg in c2_intr()

Fix a place where we might dereference a NULL pointer; this fixes
Coverity CID 1392.  On inspection I also found a place where we could
attempt to kmem_cache_free() a NULL pointer, so fix this too.

Signed-off-by: Tom Tucker <tom@opengridcomputing.com>
Signed-off-by: Roland Dreier <rolandd@cisco.com>
Tom Tucker 17 years ago
parent
commit
9285faa1e7

+ 2 - 2
drivers/infiniband/hw/amso1100/c2_cq.c

@@ -422,8 +422,8 @@ void c2_free_cq(struct c2_dev *c2dev, struct c2_cq *cq)
 		goto bail1;
 		goto bail1;
 
 
 	reply = (struct c2wr_cq_destroy_rep *) (unsigned long) (vq_req->reply_msg);
 	reply = (struct c2wr_cq_destroy_rep *) (unsigned long) (vq_req->reply_msg);
-
-	vq_repbuf_free(c2dev, reply);
+	if (reply)
+		vq_repbuf_free(c2dev, reply);
       bail1:
       bail1:
 	vq_req_free(c2dev, vq_req);
 	vq_req_free(c2dev, vq_req);
       bail0:
       bail0:

+ 5 - 1
drivers/infiniband/hw/amso1100/c2_intr.c

@@ -174,7 +174,11 @@ static void handle_vq(struct c2_dev *c2dev, u32 mq_index)
 		return;
 		return;
 	}
 	}
 
 
-	err = c2_errno(reply_msg);
+	if (reply_msg)
+		err = c2_errno(reply_msg);
+	else
+		err = -ENOMEM;
+
 	if (!err) switch (req->event) {
 	if (!err) switch (req->event) {
 	case IW_CM_EVENT_ESTABLISHED:
 	case IW_CM_EVENT_ESTABLISHED:
 		c2_set_qp_state(req->qp,
 		c2_set_qp_state(req->qp,