Mike Christie
unread,Mar 19, 2024, 3:34:05 PMMar 19Sign in to reply to author
Sign in to forward
You do not have permission to delete messages in this group
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to Khazhismel Kumykov, Lee Duncan, Chris Leech, James E . J . Bottomley, Martin K . Petersen, open-...@googlegroups.com, linux...@vger.kernel.org, linux-...@vger.kernel.org, Khazhismel Kumykov
On 3/18/24 2:49 PM, Khazhismel Kumykov wrote:
> iscsi_sw_tcp_conn_bind does not check or cleanup previously bound
> sockets, nor should we allow binding the same connection twice.
>
This looks like a problem for all the iscsi drivers.
I think you could:
1. Add a check for ISCSI_CONN_FLAG_BOUND in iscsi_conn_bind.
2. Have iscsi_sw_tcp_conn_stop do:
/* stop xmit side */
- iscsi_suspend_tx(conn);
+ iscsi_conn_unbind(cls_conn, true);
to clear the flag when we clean up the conn for relogin.
3. Fix up the other iscsi drivers so they call:
iscsi_conn_unbind(cls_conn, true);
in their failure paths so when they fail they clear ISCSI_CONN_FLAG_BOUND and
iscsi_conn_bind can be called on the retry.
> Signed-off-by: Khazhismel Kumykov <
kha...@google.com>
> ---
> drivers/scsi/iscsi_tcp.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/drivers/scsi/iscsi_tcp.c b/drivers/scsi/iscsi_tcp.c
> index e8ed60b777c6..8cf5dc203a82 100644
> --- a/drivers/scsi/iscsi_tcp.c
> +++ b/drivers/scsi/iscsi_tcp.c
> @@ -716,6 +716,9 @@ iscsi_sw_tcp_conn_bind(struct iscsi_cls_session *cls_session,
> struct socket *sock;
> int err;
>
> + if (tcp_sw_conn->sock)
> + return -EINVAL;
> +
> /* lookup for existing socket */
> sock = sockfd_lookup((int)transport_eph, &err);
> if (!sock) {