From: Lang Cheng <[email protected]>

[ Upstream commit 8f86e2eadac968200a6ab1d7074fc0f5cbc1e075 ]

When posting a multi-descriptors command, the error code of previous
failed descriptors may be rewrote to 0 by a later successful descriptor.

Fixes: a04ff739f2a9 ("RDMA/hns: Add command queue support for hip08 RoCE 
driver")
Link: 
https://lore.kernel.org/r/[email protected]
Signed-off-by: Lang Cheng <[email protected]>
Signed-off-by: Weihang Li <[email protected]>
Signed-off-by: Jason Gunthorpe <[email protected]>
Signed-off-by: Sasha Levin <[email protected]>
---
 drivers/infiniband/hw/hns/hns_roce_hw_v2.c | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/drivers/infiniband/hw/hns/hns_roce_hw_v2.c 
b/drivers/infiniband/hw/hns/hns_roce_hw_v2.c
index 43ed927860569..0f76e193317e6 100644
--- a/drivers/infiniband/hw/hns/hns_roce_hw_v2.c
+++ b/drivers/infiniband/hw/hns/hns_roce_hw_v2.c
@@ -1264,7 +1264,7 @@ static int __hns_roce_cmq_send(struct hns_roce_dev 
*hr_dev,
        u32 timeout = 0;
        int handle = 0;
        u16 desc_ret;
-       int ret = 0;
+       int ret;
        int ntc;
 
        spin_lock_bh(&csq->lock);
@@ -1309,15 +1309,14 @@ static int __hns_roce_cmq_send(struct hns_roce_dev 
*hr_dev,
        if (hns_roce_cmq_csq_done(hr_dev)) {
                complete = true;
                handle = 0;
+               ret = 0;
                while (handle < num) {
                        /* get the result of hardware write back */
                        desc_to_use = &csq->desc[ntc];
                        desc[handle] = *desc_to_use;
                        dev_dbg(hr_dev->dev, "Get cmq desc:\n");
                        desc_ret = le16_to_cpu(desc[handle].retval);
-                       if (desc_ret == CMD_EXEC_SUCCESS)
-                               ret = 0;
-                       else
+                       if (unlikely(desc_ret != CMD_EXEC_SUCCESS))
                                ret = -EIO;
                        priv->cmq.last_status = desc_ret;
                        ntc++;
-- 
2.27.0



Reply via email to