From: Ram Amrani <ram.amr...@cavium.com>

The CQ resource pool is protected by a spin lock. When a CQ creation
fails it now deallocates under that lock as well.

Signed-off-by: Ram Amrani <ram.amr...@cavium.com>
Signed-off-by: Yuval Mintz <yuval.mi...@cavium.com>
---
 drivers/net/ethernet/qlogic/qed/qed_roce.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/net/ethernet/qlogic/qed/qed_roce.c 
b/drivers/net/ethernet/qlogic/qed/qed_roce.c
index c3c8c50..50fdcd3 100644
--- a/drivers/net/ethernet/qlogic/qed/qed_roce.c
+++ b/drivers/net/ethernet/qlogic/qed/qed_roce.c
@@ -948,7 +948,9 @@ static int qed_rdma_create_cq(void *rdma_cxt,
 
 err:
        /* release allocated icid */
+       spin_lock_bh(&p_info->lock);
        qed_bmap_release_id(p_hwfn, &p_info->cq_map, returned_id);
+       spin_unlock_bh(&p_info->lock);
        DP_NOTICE(p_hwfn, "Create CQ failed, rc = %d\n", rc);
 
        return rc;
-- 
1.9.3

Reply via email to