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 |
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 --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);
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(-)