aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRonnie Sahlberg <lsahlber@redhat.com>2021-03-25 16:26:35 +1000
committerSteve French <stfrench@microsoft.com>2021-03-26 18:04:58 -0500
commitcee8f4f6fcabfdf229542926128e9874d19016d5 (patch)
tree08a3cf1c4a84f3b289b34c8212d7fb10f25d418d
parentcifs: Fix chmod with modefromsid when an older ACE already exists. (diff)
downloadlinux-dev-cee8f4f6fcabfdf229542926128e9874d19016d5.tar.xz
linux-dev-cee8f4f6fcabfdf229542926128e9874d19016d5.zip
cifs: revalidate mapping when we open files for SMB1 POSIX
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>
-rw-r--r--fs/cifs/file.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/fs/cifs/file.c b/fs/cifs/file.c
index 26de4329d161..042e24aad410 100644
--- a/fs/cifs/file.c
+++ b/fs/cifs/file.c
@@ -165,6 +165,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);
}