OSDN Git Service

RDMA/hns: Fix an error code in hns_roce_set_user_sq_size()
authorDan Carpenter <dan.carpenter@oracle.com>
Sat, 8 Jun 2019 09:27:14 +0000 (12:27 +0300)
committerJason Gunthorpe <jgg@mellanox.com>
Tue, 25 Jun 2019 13:21:13 +0000 (10:21 -0300)
This function is supposed to return negative kernel error codes but here
it returns CMD_RST_PRC_EBUSY (2).  The error code eventually gets passed
to IS_ERR() and since it's not an error pointer it leads to an Oops in
hns_roce_v1_rsv_lp_qp()

Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
drivers/infiniband/hw/hns/hns_roce_hw_v2.c

index edd62b4..7f2da5e 100644 (file)
@@ -1098,7 +1098,7 @@ static int hns_roce_cmq_send(struct hns_roce_dev *hr_dev,
        if (ret == CMD_RST_PRC_SUCCESS)
                return 0;
        if (ret == CMD_RST_PRC_EBUSY)
-               return ret;
+               return -EBUSY;
 
        ret = __hns_roce_cmq_send(hr_dev, desc, num);
        if (ret) {
@@ -1106,7 +1106,7 @@ static int hns_roce_cmq_send(struct hns_roce_dev *hr_dev,
                if (retval == CMD_RST_PRC_SUCCESS)
                        return 0;
                else if (retval == CMD_RST_PRC_EBUSY)
-                       return retval;
+                       return -EBUSY;
        }
 
        return ret;