diff mbox series

cifs: fix hang on cifs_get_next_mid()

Message ID 20220107225139.15323-1-ematsumiya@suse.de (mailing list archive)
State New, archived
Headers show
Series cifs: fix hang on cifs_get_next_mid() | expand

Commit Message

Enzo Matsumiya Jan. 7, 2022, 10:51 p.m. UTC
Mount will hang if using SMB1 and DFS.

This is because every call to get_next_mid() will, unconditionally,
mark tcpStatus to CifsNeedReconnect before even establishing the
initial connect, because "reconnect" variable was not initialized.

Initializing "reconnect" to false fix this issue.

Fixes: 220c5bc25d87 ("cifs: take cifs_tcp_ses_lock for status checks")
Signed-off-by: Enzo Matsumiya <ematsumiya@suse.de>
---
 fs/cifs/smb1ops.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Steve French Jan. 8, 2022, 2:09 a.m. UTC | #1
tentatively merged into cifs-2.6.git for-next pending testing

On Fri, Jan 7, 2022 at 4:51 PM Enzo Matsumiya <ematsumiya@suse.de> wrote:
>
> Mount will hang if using SMB1 and DFS.
>
> This is because every call to get_next_mid() will, unconditionally,
> mark tcpStatus to CifsNeedReconnect before even establishing the
> initial connect, because "reconnect" variable was not initialized.
>
> Initializing "reconnect" to false fix this issue.
>
> Fixes: 220c5bc25d87 ("cifs: take cifs_tcp_ses_lock for status checks")
> Signed-off-by: Enzo Matsumiya <ematsumiya@suse.de>
> ---
>  fs/cifs/smb1ops.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/fs/cifs/smb1ops.c b/fs/cifs/smb1ops.c
> index 54319a789c92..6364c09296e8 100644
> --- a/fs/cifs/smb1ops.c
> +++ b/fs/cifs/smb1ops.c
> @@ -163,7 +163,7 @@ cifs_get_next_mid(struct TCP_Server_Info *server)
>  {
>         __u64 mid = 0;
>         __u16 last_mid, cur_mid;
> -       bool collision, reconnect;
> +       bool collision, reconnect = false;
>
>         spin_lock(&GlobalMid_Lock);
>
> --
> 2.34.1
>
diff mbox series

Patch

diff --git a/fs/cifs/smb1ops.c b/fs/cifs/smb1ops.c
index 54319a789c92..6364c09296e8 100644
--- a/fs/cifs/smb1ops.c
+++ b/fs/cifs/smb1ops.c
@@ -163,7 +163,7 @@  cifs_get_next_mid(struct TCP_Server_Info *server)
 {
 	__u64 mid = 0;
 	__u16 last_mid, cur_mid;
-	bool collision, reconnect;
+	bool collision, reconnect = false;
 
 	spin_lock(&GlobalMid_Lock);