Patch "RDMA/bnxt_re: Fix incorrect dereference of srq in async event" has been added to the 6.11-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/bnxt_re: Fix incorrect dereference of srq in async event

to the 6.11-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-bnxt_re-fix-incorrect-dereference-of-srq-in-asy.patch
and it can be found in the queue-6.11 subdirectory.

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



commit 5e352d56aea98bc7972238654b18a0ba81444a70
Author: Kashyap Desai <kashyap.desai@xxxxxxxxxxxx>
Date:   Tue Oct 8 00:41:35 2024 -0700

    RDMA/bnxt_re: Fix incorrect dereference of srq in async event
    
    [ Upstream commit 87b4d8d28f6af8fc62766a8af7a5467b37053dfa ]
    
    Currently driver is not getting correct srq. Dereference only if qplib has
    a valid srq.
    
    Fixes: b02fd3f79ec3 ("RDMA/bnxt_re: Report async events and errors")
    Link: https://patch.msgid.link/r/1728373302-19530-4-git-send-email-selvin.xavier@xxxxxxxxxxxx
    Reviewed-by: Saravanan Vajravel <saravanan.vajravel@xxxxxxxxxxxx>
    Reviewed-by: Chandramohan Akula <chandramohan.akula@xxxxxxxxxxxx>
    Signed-off-by: Kashyap Desai <kashyap.desai@xxxxxxxxxxxx>
    Signed-off-by: Selvin Xavier <selvin.xavier@xxxxxxxxxxxx>
    Signed-off-by: Jason Gunthorpe <jgg@xxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/infiniband/hw/bnxt_re/main.c b/drivers/infiniband/hw/bnxt_re/main.c
index 2a450d7ad1990..e06adb2dfe6f9 100644
--- a/drivers/infiniband/hw/bnxt_re/main.c
+++ b/drivers/infiniband/hw/bnxt_re/main.c
@@ -1012,12 +1012,15 @@ static int bnxt_re_handle_unaffi_async_event(struct creq_func_event
 static int bnxt_re_handle_qp_async_event(struct creq_qp_event *qp_event,
 					 struct bnxt_re_qp *qp)
 {
-	struct bnxt_re_srq *srq = container_of(qp->qplib_qp.srq, struct bnxt_re_srq,
-					       qplib_srq);
 	struct creq_qp_error_notification *err_event;
+	struct bnxt_re_srq *srq = NULL;
 	struct ib_event event = {};
 	unsigned int flags;
 
+	if (qp->qplib_qp.srq)
+		srq =  container_of(qp->qplib_qp.srq, struct bnxt_re_srq,
+				    qplib_srq);
+
 	if (qp->qplib_qp.state == CMDQ_MODIFY_QP_NEW_STATE_ERR &&
 	    rdma_is_kernel_res(&qp->ib_qp.res)) {
 		flags = bnxt_re_lock_cqs(qp);




[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