* 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
-~--~~~~--~~--~--~---