Messages in this thread Patch in this message | | | From | Jia-Ju Bai <> | Subject | [PATCH] infiniband: hw: cxgb3: Fix a possible null-pointer dereference in connect_reply_upcall() | Date | Thu, 25 Jul 2019 20:15:08 +0800 |
| |
In connect_reply_upcall(), there is an if statement on line 730 to check whether ep->com.cm_id is NULL: if (ep->com.cm_id)
When ep->com.cm_id is NULL, it is used on line 736: ep->com.cm_id->rem_ref(ep->com.cm_id);
Thus, a possible null-pointer dereference may occur.
To fix this bug, ep->com.cm_id is checked before being used.
This bug is found by a static analysis tool STCheck written by us.
Signed-off-by: Jia-Ju Bai <baijiaju1990@gmail.com> --- drivers/infiniband/hw/cxgb3/iwch_cm.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/infiniband/hw/cxgb3/iwch_cm.c b/drivers/infiniband/hw/cxgb3/iwch_cm.c index 0bca72cb4d9a..2b31c4726d3e 100644 --- a/drivers/infiniband/hw/cxgb3/iwch_cm.c +++ b/drivers/infiniband/hw/cxgb3/iwch_cm.c @@ -733,7 +733,8 @@ static void connect_reply_upcall(struct iwch_ep *ep, int status) ep->com.cm_id->event_handler(ep->com.cm_id, &event); } if (status < 0) { - ep->com.cm_id->rem_ref(ep->com.cm_id); + if (ep->com.cm_id) + ep->com.cm_id->rem_ref(ep->com.cm_id); ep->com.cm_id = NULL; ep->com.qp = NULL; } -- 2.17.0
| |