Patch "RDMA: Fix use-after-free in rxe_queue_cleanup" has been added to the 5.15-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: Fix use-after-free in rxe_queue_cleanup

to the 5.15-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-fix-use-after-free-in-rxe_queue_cleanup.patch
and it can be found in the queue-5.15 subdirectory.

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



commit 75eb6f438561f0efaa7fef31cce1e4b92526b276
Author: Pavel Skripkin <paskripkin@xxxxxxxxx>
Date:   Sun Nov 21 23:22:39 2021 +0300

    RDMA: Fix use-after-free in rxe_queue_cleanup
    
    [ Upstream commit 84b01721e8042cdd1e8ffeb648844a09cd4213e0 ]
    
    On error handling path in rxe_qp_from_init() qp->sq.queue is freed and
    then rxe_create_qp() will drop last reference to this object. qp clean up
    function will try to free this queue one time and it causes UAF bug.
    
    Fix it by zeroing queue pointer after freeing queue in rxe_qp_from_init().
    
    Fixes: 514aee660df4 ("RDMA: Globally allocate and release QP memory")
    Link: https://lore.kernel.org/r/20211121202239.3129-1-paskripkin@xxxxxxxxx
    Reported-by: syzbot+aab53008a5adf26abe91@xxxxxxxxxxxxxxxxxxxxxxxxx
    Signed-off-by: Pavel Skripkin <paskripkin@xxxxxxxxx>
    Reviewed-by: Zhu Yanjun <zyjzyj2000@xxxxxxxxx>
    Signed-off-by: Jason Gunthorpe <jgg@xxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/infiniband/sw/rxe/rxe_qp.c b/drivers/infiniband/sw/rxe/rxe_qp.c
index 1ab6af7ddb254..ed326d82725cd 100644
--- a/drivers/infiniband/sw/rxe/rxe_qp.c
+++ b/drivers/infiniband/sw/rxe/rxe_qp.c
@@ -367,6 +367,7 @@ int rxe_qp_from_init(struct rxe_dev *rxe, struct rxe_qp *qp, struct rxe_pd *pd,
 
 err2:
 	rxe_queue_cleanup(qp->sq.queue);
+	qp->sq.queue = NULL;
 err1:
 	qp->pd = NULL;
 	qp->rcq = NULL;



[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