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:
@@ -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);
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user