linux-stable/fs/cifs
Ronnie Sahlberg 079b2f6c65 cifs: destage any unwritten data to the server before calling copychunk_write
[ Upstream commit f5d0f921ea ]

because the copychunk_write might cover a region of the file that has not yet
been sent to the server and thus fail.

A simple way to reproduce this is:
truncate -s 0 /mnt/testfile; strace -f -o x -ttT xfs_io -i -f -c 'pwrite 0k 128k' -c 'fcollapse 16k 24k' /mnt/testfile

the issue is that the 'pwrite 0k 128k' becomes rearranged on the wire with
the 'fcollapse 16k 24k' due to write-back caching.

fcollapse is implemented in cifs.ko as a SMB2 IOCTL(COPYCHUNK_WRITE) call
and it will fail serverside since the file is still 0b in size serverside
until the writes have been destaged.
To avoid this we must ensure that we destage any unwritten data to the
server before calling COPYCHUNK_WRITE.

Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1997373
Reported-by: Xiaoli Feng <xifeng@redhat.com>
Signed-off-by: Ronnie Sahlberg <lsahlber@redhat.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2022-05-12 12:17:07 +02:00
..
asn1.c cifs: remove bogus debug code 2020-10-29 09:07:00 +01:00
cache.c fscache: remove unused ->now_uncached callback 2017-09-06 17:27:26 -07:00
cifs_debug.c smb3: allow stats which track session and share reconnects to be reset 2018-11-13 11:15:09 -08:00
cifs_debug.h
cifs_dfs_ref.c cifs: use correct format characters 2019-04-05 22:31:28 +02:00
cifs_fs_sb.h cifs: Convert to separately allocated bdi 2017-04-20 12:09:55 -06:00
cifs_ioctl.h
cifs_spnego.c smb3: on kerberos mount if server doesn't specify auth type use krb5 2018-11-13 11:15:09 -08:00
cifs_spnego.h
cifs_unicode.c CIFS: Fix a potencially linear read overflow 2021-09-22 11:45:22 +02:00
cifs_unicode.h [SMB3] Remove ifdef since SMB3 (and later) now STRONGLY preferred 2017-07-08 18:57:07 -05:00
cifs_uniupr.h
cifsacl.c cifs: Fix mode output in debugging statements 2020-03-11 18:02:46 +01:00
cifsacl.h cifs: For SMB2 security informaion query, check for minimum sized security descriptor instead of sizeof FileAllInformation class 2018-06-26 08:06:31 +08:00
cifsencrypt.c CIFS: fix sha512 check in cifs_crypto_secmech_release 2018-04-24 09:36:27 +02:00
cifsfs.c cifs: Check the IOCB_DIRECT flag, not O_DIRECT 2022-04-27 13:15:30 +02:00
cifsfs.h Update version of cifs module 2017-09-17 23:10:48 -05:00
cifsglob.h CIFS: Properly process SMB3 lease breaks 2020-10-01 13:12:30 +02:00
cifspdu.h CIFS: move DFS response parsing out of SMB1 code 2017-03-01 22:26:10 -06:00
cifsproto.h cifs: Fix cifsInodeInfo lock_sem deadlock when reconnect occurs 2019-11-10 11:25:19 +01:00
cifssmb.c CIFS: Fix credits calculations for reads with errors 2019-01-31 08:13:44 +01:00
connect.c cifs: fix incorrect check for null pointer in header_assemble 2021-10-06 15:05:04 +02:00
dir.c cifs: report error instead of invalid when revalidating a dentry fails 2021-02-10 09:12:09 +01:00
dns_resolve.c
dns_resolve.h
export.c
file.c cifs: revalidate mapping when we open files for SMB1 POSIX 2021-04-10 13:20:11 +02:00
fscache.c
fscache.h
inode.c Revert "cifs: Fix the target file was deleted when rename failed." 2020-07-29 07:42:56 +02:00
ioctl.c [SMB3] Remove ifdef since SMB3 (and later) now STRONGLY preferred 2017-07-08 18:57:07 -05:00
Kconfig cifs: allow disabling insecure dialects in the config 2019-01-26 09:37:07 +01:00
link.c cifs: potential buffer overflow in handling symlinks 2022-04-20 09:08:31 +02:00
Makefile License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
misc.c CIFS: Properly process SMB3 lease breaks 2020-10-01 13:12:30 +02:00
netmisc.c fs: cifs: mute -Wunused-const-variable message 2019-11-06 12:43:10 +01:00
nterr.c
nterr.h
ntlmssp.h
readdir.c cifs: check ntwrk_buf_start for NULL before dereferencing it 2019-02-12 19:46:08 +01:00
rfc1002pdu.h
sess.c cifs: fix wrong release in sess_alloc_buffer() failed path 2021-09-22 11:45:31 +02:00
smb1ops.c CIFS: Properly process SMB3 lease breaks 2020-10-01 13:12:30 +02:00
smb2file.c cifs: Adjust indentation in smb2_open_file 2020-01-17 19:45:45 +01:00
smb2glob.h CIFS: Separate SMB2 header structure 2017-02-01 16:46:34 -06:00
smb2inode.c smb3: Do not send SMB3 SET_INFO if nothing changed 2018-09-05 09:26:33 +02:00
smb2maperror.c SMB3: retry on STATUS_INSUFFICIENT_RESOURCES instead of failing write 2019-06-25 11:36:54 +08:00
smb2misc.c cifs: Silently ignore unknown oplock break handle 2021-04-10 13:20:11 +02:00
smb2ops.c cifs: destage any unwritten data to the server before calling copychunk_write 2022-05-12 12:17:07 +02:00
smb2pdu.c SMB3: incorrect file id in requests compounded with open 2021-06-03 08:36:22 +02:00
smb2pdu.h smb3: Fix out-of-bounds bug in SMB2_negotiate() 2021-02-10 09:12:09 +01:00
smb2proto.h CIFS: add sha512 secmech 2018-04-24 09:36:27 +02:00
smb2status.h
smb2transport.c cifs: Fix use after free of a mid_q_entry 2018-07-11 16:29:15 +02:00
smbencrypt.c CIFS: refactor crypto shash/sdesc allocation&free 2018-04-24 09:36:27 +02:00
smberr.h
smbfsctl.h
transport.c CIFS: Do not hide EINTR after sending network packets 2019-01-16 22:07:10 +01:00
winucase.c
xattr.c CIFS: fix max ea value size 2019-10-05 12:48:12 +02:00