Re: [SMB3][PATCH] smb3: do not attempt cifs operation in smb3 query info error path

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Reviewed-by: Ronnie Sahlberg <lsahlber@xxxxxxxxxx>
On Fri, Oct 19, 2018 at 4:10 PM Steve French <smfrench@xxxxxxxxx> wrote:
>
> If backupuid mount option is sent, we can incorrectly retry
> (on access denied on query info) with a cifs (FindFirst) operation
> on an smb3 mount which causes the server to force the session close.
>
> We set backup intent on open so no need for this fallback.
>
> See kernel bugzilla 201435
>
> Signed-off-by: Steve French <stfrench@xxxxxxxxxxxxx>
> CC: Stable <stable@xxxxxxxxxxxxxxx>
> ---
>  fs/cifs/inode.c | 10 +++++++++-
>  1 file changed, 9 insertions(+), 1 deletion(-)
>
> diff --git a/fs/cifs/inode.c b/fs/cifs/inode.c
> index 0945d40030eb..7483c09317b9 100644
> --- a/fs/cifs/inode.c
> +++ b/fs/cifs/inode.c
> @@ -781,7 +781,15 @@ cifs_get_inode_info(struct inode **inode, const
> char *full_path,
>      } else if (rc == -EREMOTE) {
>          cifs_create_dfs_fattr(&fattr, sb);
>          rc = 0;
> -    } else if (rc == -EACCES && backup_cred(cifs_sb)) {
> +    } else if ((rc == -EACCES) && backup_cred(cifs_sb) &&
> +           (strcmp(server->vals->version_string, SMB1_VERSION_STRING)
> +              == 0)) {
> +            /*
> +             * For SMB2 and later the backup intent flag is already
> +             * sent if needed on open and there is no path based
> +             * FindFirst operation to use to retry with
> +             */
> +
>              srchinf = kzalloc(sizeof(struct cifs_search_info),
>                          GFP_KERNEL);
>              if (srchinf == NULL) {
>
> --
> Thanks,
>
> Steve



[Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux