IB/i40iw: Fix error code in i40iw_create_cq()
authorDan Carpenter <dan.carpenter@oracle.com>
Thu, 13 Jul 2017 07:47:22 +0000 (10:47 +0300)
committerDoug Ledford <dledford@redhat.com>
Thu, 20 Jul 2017 15:20:49 +0000 (11:20 -0400)
We accidentally forgot to set the error code if ib_copy_from_udata()
fails.  It means we return ERR_PTR(0) which is NULL and results in a
NULL dereference in the callers.

Fixes: d37498417947 ("i40iw: add files for iwarp interface")
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Acked-by: Shiraz Saleem <shiraz.saleem@intel.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
drivers/infiniband/hw/i40iw/i40iw_verbs.c

index 4aa0264ccb3ab4486b01b45feb226386894e9bcd..02d871db7ca56eded6143a741e5879b4fec96d80 100644 (file)
@@ -1168,8 +1168,10 @@ static struct ib_cq *i40iw_create_cq(struct ib_device *ibdev,
                memset(&req, 0, sizeof(req));
                iwcq->user_mode = true;
                ucontext = to_ucontext(context);
-               if (ib_copy_from_udata(&req, udata, sizeof(struct i40iw_create_cq_req)))
+               if (ib_copy_from_udata(&req, udata, sizeof(struct i40iw_create_cq_req))) {
+                       err_code = -EFAULT;
                        goto cq_free_resources;
+               }
 
                spin_lock_irqsave(&ucontext->cq_reg_mem_list_lock, flags);
                iwpbl = i40iw_get_pbl((unsigned long)req.user_cq_buffer,