]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
cifs: revalidate mapping when we open files for SMB1 POSIX
authorRonnie Sahlberg <lsahlber@redhat.com>
Thu, 25 Mar 2021 06:26:35 +0000 (16:26 +1000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 10 Apr 2021 11:01:57 +0000 (13:01 +0200)
[ Upstream commit cee8f4f6fcabfdf229542926128e9874d19016d5 ]

RHBZ: 1933527

Under SMB1 + POSIX, if an inode is reused on a server after we have read and
cached a part of a file, when we then open the new file with the
re-cycled inode there is a chance that we may serve the old data out of cache
to the application.
This only happens for SMB1 (deprecated) and when posix are used.
The simplest solution to avoid this race is to force a revalidate
on smb1-posix open.

Signed-off-by: Ronnie Sahlberg <lsahlber@redhat.com>
Reviewed-by: Paulo Alcantara (SUSE) <pc@cjr.nz>
Signed-off-by: Steve French <stfrench@microsoft.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
fs/cifs/file.c

index b5a05092f862e9d803c9b8ef9f81bcaccd7c92e9..5bc617cb7721df23bd2891fd8258857d899091f1 100644 (file)
@@ -163,6 +163,7 @@ int cifs_posix_open(char *full_path, struct inode **pinode,
                        goto posix_open_ret;
                }
        } else {
+               cifs_revalidate_mapping(*pinode);
                cifs_fattr_to_inode(*pinode, &fattr);
        }