Message ID | 20200205010801.27759-1-lsahlber@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | cifs: fail i/o on soft mounts if sessionsetup errors out | expand |
Added cc:stable and merged into cifs-2.6.git for-next On Tue, Feb 4, 2020 at 7:08 PM Ronnie Sahlberg <lsahlber@redhat.com> wrote: > > RHBZ: 1579050 > > If we have a soft mount we should fail commands for session-setup > failures (such as the password having changed/ account being deleted/ ...) > and return an error back to the application. > > Signed-off-by: Ronnie Sahlberg <lsahlber@redhat.com> > --- > fs/cifs/smb2pdu.c | 10 ++++++++-- > 1 file changed, 8 insertions(+), 2 deletions(-) > > diff --git a/fs/cifs/smb2pdu.c b/fs/cifs/smb2pdu.c > index 14f209f7376f..7996d81230aa 100644 > --- a/fs/cifs/smb2pdu.c > +++ b/fs/cifs/smb2pdu.c > @@ -350,9 +350,14 @@ smb2_reconnect(__le16 smb2_command, struct cifs_tcon *tcon) > } > > rc = cifs_negotiate_protocol(0, tcon->ses); > - if (!rc && tcon->ses->need_reconnect) > + if (!rc && tcon->ses->need_reconnect) { > rc = cifs_setup_session(0, tcon->ses, nls_codepage); > - > + if ((rc == -EACCES) && !tcon->retry) { > + rc = -EHOSTDOWN; > + mutex_unlock(&tcon->ses->session_mutex); > + goto failed; > + } > + } > if (rc || !tcon->need_reconnect) { > mutex_unlock(&tcon->ses->session_mutex); > goto out; > @@ -397,6 +402,7 @@ smb2_reconnect(__le16 smb2_command, struct cifs_tcon *tcon) > case SMB2_SET_INFO: > rc = -EAGAIN; > } > +failed: > unload_nls(nls_codepage); > return rc; > } > -- > 2.13.6 >
Steve French <smfrench@gmail.com> writes: >> If we have a soft mount we should fail commands for session-setup >> failures (such as the password having changed/ account being deleted/ ...) >> and return an error back to the application. Looks good to me but we need to make sure it doesnt break failover on the buildbot. Cheers,
diff --git a/fs/cifs/smb2pdu.c b/fs/cifs/smb2pdu.c index 14f209f7376f..7996d81230aa 100644 --- a/fs/cifs/smb2pdu.c +++ b/fs/cifs/smb2pdu.c @@ -350,9 +350,14 @@ smb2_reconnect(__le16 smb2_command, struct cifs_tcon *tcon) } rc = cifs_negotiate_protocol(0, tcon->ses); - if (!rc && tcon->ses->need_reconnect) + if (!rc && tcon->ses->need_reconnect) { rc = cifs_setup_session(0, tcon->ses, nls_codepage); - + if ((rc == -EACCES) && !tcon->retry) { + rc = -EHOSTDOWN; + mutex_unlock(&tcon->ses->session_mutex); + goto failed; + } + } if (rc || !tcon->need_reconnect) { mutex_unlock(&tcon->ses->session_mutex); goto out; @@ -397,6 +402,7 @@ smb2_reconnect(__le16 smb2_command, struct cifs_tcon *tcon) case SMB2_SET_INFO: rc = -EAGAIN; } +failed: unload_nls(nls_codepage); return rc; }
RHBZ: 1579050 If we have a soft mount we should fail commands for session-setup failures (such as the password having changed/ account being deleted/ ...) and return an error back to the application. Signed-off-by: Ronnie Sahlberg <lsahlber@redhat.com> --- fs/cifs/smb2pdu.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-)