From: Dan Carpenter <dan.carpen...@oracle.com>

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 <sta...@vger.kernel.org>
Reported-by: Thomas Lamprecht <t.lampre...@proxmox.com>
Signed-off-by: Dan Carpenter <dan.carpen...@oracle.com>
Signed-off-by: Martin K. Petersen <martin.peter...@oracle.com>
Signed-off-by: Greg Kroah-Hartman <gre...@linuxfoundation.org>

---
 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
@@ -3020,7 +3020,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);
@@ -3030,6 +3029,7 @@ static int beiscsi_create_eqs(struct bei
                        goto create_eq_error;
                }
 
+               mem->dma = paddr;
                ret = beiscsi_cmd_eq_create(&phba->ctrl, eq,
                                            BEISCSI_EQ_DELAY_DEF);
                if (ret) {
@@ -3086,7 +3086,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) {
@@ -3096,6 +3095,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