diff mbox series

cifs: revalidate mapping when we open files for SMB1 POSIX

Message ID 20210325062635.43370-1-lsahlber@redhat.com (mailing list archive)
State New, archived
Headers show
Series cifs: revalidate mapping when we open files for SMB1 POSIX | expand

Commit Message

Ronnie Sahlberg March 25, 2021, 6:26 a.m. UTC
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>
---
 fs/cifs/file.c | 1 +
 1 file changed, 1 insertion(+)

Comments

Paulo Alcantara March 25, 2021, 3:34 p.m. UTC | #1
Ronnie Sahlberg <lsahlber@redhat.com> writes:

> 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>
> ---
>  fs/cifs/file.c | 1 +
>  1 file changed, 1 insertion(+)

Reviewed-by: Paulo Alcantara (SUSE) <pc@cjr.nz>
Steve French March 25, 2021, 3:42 p.m. UTC | #2
merged into cifs-2.6.git for-next

On Thu, Mar 25, 2021 at 10:34 AM Paulo Alcantara <pc@cjr.nz> wrote:
>
> Ronnie Sahlberg <lsahlber@redhat.com> writes:
>
> > 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>
> > ---
> >  fs/cifs/file.c | 1 +
> >  1 file changed, 1 insertion(+)
>
> Reviewed-by: Paulo Alcantara (SUSE) <pc@cjr.nz>
diff mbox series

Patch

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