socket: fix disconnect corner case for iser

iscsi->fd is never initialized in iser driver, so iscsi_disconnect
always does not work for iser context.

iscsi->fd is used as a member variable of TCP context, so let iscsi
TCP driver handle iscsi->fd, we just call iscsi_disconnect in
iscsi_destroy_context. Luckly, TCP driver has already handle invalid
iscsi->fd case in iscsi_tcp_disconnect.

And fix NULL pointer case for iscsi_disconnect.

Signed-off-by: zhenwei pi <pizhenwei@bytedance.com>
This commit is contained in:
zhenwei pi
2020-02-26 10:29:44 +08:00
parent a391176a6d
commit e2a7fdfb36
2 changed files with 4 additions and 3 deletions

View File

@@ -393,9 +393,7 @@ iscsi_destroy_context(struct iscsi_context *iscsi)
return 0;
}
if (iscsi->fd != -1) {
iscsi_disconnect(iscsi);
}
iscsi_disconnect(iscsi);
iscsi_cancel_pdus(iscsi);

View File

@@ -425,6 +425,9 @@ iscsi_tcp_disconnect(struct iscsi_context *iscsi)
int
iscsi_disconnect(struct iscsi_context *iscsi)
{
if (!iscsi || !iscsi->drv || !iscsi->drv->disconnect)
return -1;
return iscsi->drv->disconnect(iscsi);
}