From: Dan Carpenter <[email protected]>

commit eeaf06af6f87e1dba371fbe42674e6f963220b9c upstream.

My patch caused kernel Oopses and delays in boot.  Revert it.

The problem was that I moved the "mem->dma = paddr;" before the call to
be_fill_queue().  But the first thing that the be_fill_queue() function
does is memset the whole struct to zero which overwrites the assignment.

Link: https://lore.kernel.org/r/X8jXkt6eThjyVP1v@mwanda
Fixes: 38b2db564d9a ("scsi: be2iscsi: Fix a theoretical leak in 
beiscsi_create_eqs()")
Cc: stable <[email protected]>
Reported-by: Thomas Lamprecht <[email protected]>
Signed-off-by: Dan Carpenter <[email protected]>
Signed-off-by: Martin K. Petersen <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>

---
 drivers/scsi/be2iscsi/be_main.c |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

--- a/drivers/scsi/be2iscsi/be_main.c
+++ b/drivers/scsi/be2iscsi/be_main.c
@@ -3013,7 +3013,6 @@ static int beiscsi_create_eqs(struct bei
                        goto create_eq_error;
                }
 
-               mem->dma = paddr;
                mem->va = eq_vaddress;
                ret = be_fill_queue(eq, phba->params.num_eq_entries,
                                    sizeof(struct be_eq_entry), eq_vaddress);
@@ -3023,6 +3022,7 @@ static int beiscsi_create_eqs(struct bei
                        goto create_eq_error;
                }
 
+               mem->dma = paddr;
                ret = beiscsi_cmd_eq_create(&phba->ctrl, eq,
                                            phwi_context->cur_eqd);
                if (ret) {
@@ -3079,7 +3079,6 @@ static int beiscsi_create_cqs(struct bei
                        goto create_cq_error;
                }
 
-               mem->dma = paddr;
                ret = be_fill_queue(cq, phba->params.num_cq_entries,
                                    sizeof(struct sol_cqe), cq_vaddress);
                if (ret) {
@@ -3089,6 +3088,7 @@ static int beiscsi_create_cqs(struct bei
                        goto create_cq_error;
                }
 
+               mem->dma = paddr;
                ret = beiscsi_cmd_cq_create(&phba->ctrl, cq, eq, false,
                                            false, 0);
                if (ret) {


Reply via email to