Patch "RDMA/irdma: Fix a window for use-after-free" has been added to the 5.18-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    RDMA/irdma: Fix a window for use-after-free

to the 5.18-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     rdma-irdma-fix-a-window-for-use-after-free.patch
and it can be found in the queue-5.18 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 6777cbe4ac52656ec04525510df54ae8f3353fed
Author: Mustafa Ismail <mustafa.ismail@xxxxxxxxx>
Date:   Tue Jul 5 18:08:13 2022 -0500

    RDMA/irdma: Fix a window for use-after-free
    
    [ Upstream commit 8ecef7890b3aea78c8bbb501a4b5b8134367b821 ]
    
    During a destroy CQ an interrupt may cause processing of a CQE after CQ
    resources are freed by irdma_cq_free_rsrc(). Fix this by moving the call
    to irdma_cq_free_rsrc() after the irdma_sc_cleanup_ceqes(), which is
    called under the cq_lock.
    
    Fixes: b48c24c2d710 ("RDMA/irdma: Implement device supported verb APIs")
    Link: https://lore.kernel.org/r/20220705230815.265-6-shiraz.saleem@xxxxxxxxx
    Signed-off-by: Bartosz Sobczak <bartosz.sobczak@xxxxxxxxx>
    Signed-off-by: Mustafa Ismail <mustafa.ismail@xxxxxxxxx>
    Signed-off-by: Shiraz Saleem <shiraz.saleem@xxxxxxxxx>
    Signed-off-by: Leon Romanovsky <leon@xxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/infiniband/hw/irdma/verbs.c b/drivers/infiniband/hw/irdma/verbs.c
index 6daa149dcbda..b29631f6659a 100644
--- a/drivers/infiniband/hw/irdma/verbs.c
+++ b/drivers/infiniband/hw/irdma/verbs.c
@@ -1760,11 +1760,11 @@ static int irdma_destroy_cq(struct ib_cq *ib_cq, struct ib_udata *udata)
 	spin_unlock_irqrestore(&iwcq->lock, flags);
 
 	irdma_cq_wq_destroy(iwdev->rf, cq);
-	irdma_cq_free_rsrc(iwdev->rf, iwcq);
 
 	spin_lock_irqsave(&iwceq->ce_lock, flags);
 	irdma_sc_cleanup_ceqes(cq, ceq);
 	spin_unlock_irqrestore(&iwceq->ce_lock, flags);
+	irdma_cq_free_rsrc(iwdev->rf, iwcq);
 
 	return 0;
 }



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux