* when bnx2i_adapter_ready() fails, connection handle(cid) = 0 is
      wrongly freed because 'cid' is not yet allocated for the endpoint
    * Fix is to initialize bnx2i_ep->ep_iscsi_cid to '-1' in bnx2i_alloc_ep()
      and not in bnx2i_ep_connect() to avoid releasing invalid 'cid'
    * There is already a check in bnx2i_free_iscsi_cid() not to free
      invalid iscsi connection handle (-1)

Signed-off-by: Anil Veerabhadrappa <ani...@broadcom.com>
---
 drivers/scsi/bnx2i/bnx2i_iscsi.c |    3 +--
 1 files changed, 1 insertions(+), 2 deletions(-)

diff --git a/drivers/scsi/bnx2i/bnx2i_iscsi.c b/drivers/scsi/bnx2i/bnx2i_iscsi.c
index 9535bb6..08d0bfc 100644
--- a/drivers/scsi/bnx2i/bnx2i_iscsi.c
+++ b/drivers/scsi/bnx2i/bnx2i_iscsi.c
@@ -387,6 +387,7 @@ static struct iscsi_endpoint *bnx2i_alloc_ep(struct 
bnx2i_hba *hba)
        bnx2i_ep = ep->dd_data;
        INIT_LIST_HEAD(&bnx2i_ep->link);
        bnx2i_ep->state = EP_STATE_IDLE;
+       bnx2i_ep->ep_iscsi_cid = (u16) -1;
        bnx2i_ep->hba = hba;
        bnx2i_ep->hba_age = hba->age;
        hba->ofld_conns_active++;
@@ -1678,8 +1679,6 @@ static struct iscsi_endpoint *bnx2i_ep_connect(struct 
Scsi_Host *shost,
                goto net_if_down;
        }
 
-       bnx2i_ep->state = EP_STATE_IDLE;
-       bnx2i_ep->ep_iscsi_cid = (u16) -1;
        bnx2i_ep->num_active_cmds = 0;
        iscsi_cid = bnx2i_alloc_iscsi_cid(hba);
        if (iscsi_cid == -1) {
-- 
1.5.4.3





--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"open-iscsi" group.
To post to this group, send email to open-iscsi@googlegroups.com
To unsubscribe from this group, send email to 
open-iscsi+unsubscr...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/open-iscsi
-~----------~----~----~----~------~----~------~--~---

Reply via email to