linux/fs/cifs
Paulo Alcantara 04ad69c342 cifs: do not send close in compound create+close requests
In case of interrupted syscalls, prevent sending CLOSE commands for
compound CREATE+CLOSE requests by introducing an
CIFS_CP_CREATE_CLOSE_OP flag to indicate lower layers that it should
not send a CLOSE command to the MIDs corresponding the compound
CREATE+CLOSE request.

A simple reproducer:

    #!/bin/bash

    mount //server/share /mnt -o username=foo,password=***
    tc qdisc add dev eth0 root netem delay 450ms
    stat -f /mnt &>/dev/null & pid=$!
    sleep 0.01
    kill $pid
    tc qdisc del dev eth0 root
    umount /mnt

Before patch:

    ...
    6 0.256893470 192.168.122.2 → 192.168.122.15 SMB2 402 Create Request File: ;GetInfo Request FS_INFO/FileFsFullSizeInformation;Close Request
    7 0.257144491 192.168.122.15 → 192.168.122.2 SMB2 498 Create Response File: ;GetInfo Response;Close Response
    9 0.260798209 192.168.122.2 → 192.168.122.15 SMB2 146 Close Request File:
   10 0.260841089 192.168.122.15 → 192.168.122.2 SMB2 130 Close Response, Error: STATUS_FILE_CLOSED

Signed-off-by: Paulo Alcantara (SUSE) <pc@cjr.nz>
Reviewed-by: Ronnie Sahlberg <lsahlber@redhat.com>
Reviewed-by: Aurelien Aptel <aaptel@suse.com>
CC: <stable@vger.kernel.org>
Signed-off-by: Steve French <stfrench@microsoft.com>
2021-03-08 21:23:22 -06:00
..
Kconfig cifs: minor updates to Kconfig 2020-12-14 09:16:22 -06:00
Makefile cifs: Send witness register and unregister commands to userspace daemon 2020-12-14 09:16:22 -06:00
asn1.c cifs: remove bogus debug code 2020-10-22 12:17:52 -05:00
cache.c cifs: Make extract_sharename function public 2020-12-14 09:16:22 -06:00
cifs_debug.c cifs: print MIDs in decimal notation 2021-03-08 21:22:31 -06:00
cifs_debug.h cifs: Standardize logging output 2020-06-01 00:10:18 -05:00
cifs_dfs_ref.c cifs: fix dfs domain referrals 2021-01-28 21:40:43 -06:00
cifs_fs_sb.h cifs: move [brw]size from cifs_sb to cifs_sb->ctx 2020-12-14 09:26:30 -06:00
cifs_ioctl.h cifs: add SMB3 change notification support 2020-02-06 09:14:28 -06:00
cifs_spnego.c cifs: switch servers depending on binding state 2019-11-25 01:16:30 -06:00
cifs_spnego.h
cifs_swn.c cifs: Fix inconsistent IS_ERR and PTR_ERR 2021-02-19 21:29:10 -06:00
cifs_swn.h cifs: Send witness register messages to userspace daemon in echo task 2020-12-14 09:16:23 -06:00
cifs_unicode.c Convert trailing spaces and periods in path components 2020-10-11 23:57:18 -05:00
cifs_unicode.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 156 2019-05-30 11:26:35 -07:00
cifs_uniupr.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 156 2019-05-30 11:26:35 -07:00
cifsacl.c cifs: If a corrupted DACL is returned by the server, bail out. 2021-02-24 11:41:43 -06:00
cifsacl.h cifs: Fix cifsacl ACE mask for group and others. 2021-02-22 21:20:44 -06:00
cifsencrypt.c cifs: change confusing field serverName (to ip_addr) 2021-02-22 21:20:43 -06:00
cifsfs.c cifs: return proper error code in statfs(2) 2021-03-08 21:23:11 -06:00
cifsfs.h cifs/smb3 fixes including improvements to mode bit conversion when using cifsacl mount option, new mount options for controlling attribute caching, improvements to crediting and reconnect, improved debugging 2021-02-26 14:09:41 -08:00
cifsglob.h cifs: do not send close in compound create+close requests 2021-03-08 21:23:22 -06:00
cifspdu.h SMB3: Add support for getting and setting SACLs 2020-12-18 13:25:57 -06:00
cifsproto.h cifs: use discard iterator to discard unneeded network data more efficiently 2021-02-25 19:08:06 -06:00
cifsroot.c cifs: Standardize logging output 2020-06-01 00:10:18 -05:00
cifssmb.c cifs: use discard iterator to discard unneeded network data more efficiently 2021-02-25 19:08:06 -06:00
connect.c cifs: print MIDs in decimal notation 2021-03-08 21:22:31 -06:00
dfs_cache.c cifs: introduce helper for finding referral server to improve DFS target resolution 2021-02-25 12:19:15 -06:00
dfs_cache.h cifs: rename smb_vol as smb3_fs_context and move it to fs_context.h 2020-12-13 19:12:07 -06:00
dir.c idmapped-mounts-v5.12 2021-02-23 13:39:45 -08:00
dns_resolve.c keys: Pass the network namespace into request_key mechanism 2019-06-27 23:02:12 +01:00
dns_resolve.h
export.c docs: fs: convert docs without extension to ReST 2019-07-31 13:31:05 -06:00
file.c cifs: change confusing field serverName (to ip_addr) 2021-02-22 21:20:43 -06:00
fs_context.c cifs: fix handling of escaped ',' in the password mount argument 2021-02-25 12:13:13 -06:00
fs_context.h cifs: Add new parameter "acregmax" for distinct file and directory metadata timeout 2021-02-25 11:47:49 -06:00
fscache.c cifs: Make extract_sharename function public 2020-12-14 09:16:22 -06:00
fscache.h cifs: Make extract_sharename function public 2020-12-14 09:16:22 -06:00
inode.c cifs/smb3 fixes including improvements to mode bit conversion when using cifsacl mount option, new mount options for controlling attribute caching, improvements to crediting and reconnect, improved debugging 2021-02-26 14:09:41 -08:00
ioctl.c cifs: fix reference leak for tlink 2020-07-09 10:06:52 -05:00
link.c fs: make helpers idmap mount aware 2021-01-24 14:27:20 +01:00
misc.c cifs: remove [gu]id/backup[gu]id/file_mode/dir_mode from cifs_sb 2020-12-14 09:16:23 -06:00
netlink.c cifs: Set witness notification handler for messages from userspace daemon 2020-12-14 09:16:22 -06:00
netlink.h cifs: Register generic netlink family 2020-12-14 09:16:22 -06:00
netmisc.c cifs`: handle ERRBaduid for SMB1 2020-08-02 18:00:25 -05:00
nterr.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 61 2019-05-24 17:36:45 +02:00
nterr.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 61 2019-05-24 17:36:45 +02:00
ntlmssp.h cifs: dynamic allocation of ntlmssp blob 2016-06-23 23:45:07 -05:00
readdir.c cifs: remove [gu]id/backup[gu]id/file_mode/dir_mode from cifs_sb 2020-12-14 09:16:23 -06:00
rfc1002pdu.h
sess.c cifs: fix credit accounting for extra channel 2021-03-06 11:35:57 -06:00
smb1ops.c cifs: move [brw]size from cifs_sb to cifs_sb->ctx 2020-12-14 09:26:30 -06:00
smb2file.c cifs: allow unlock flock and OFD lock across fork 2020-03-22 22:49:09 -05:00
smb2glob.h smb3.1.1: set gcm256 when requested 2020-10-19 15:11:11 -05:00
smb2inode.c cifs: do not send close in compound create+close requests 2021-03-08 21:23:22 -06:00
smb2maperror.c cifs: map STATUS_ACCOUNT_LOCKED_OUT to -EACCES 2020-10-15 23:58:14 -05:00
smb2misc.c cifs: do not send close in compound create+close requests 2021-03-08 21:23:22 -06:00
smb2ops.c cifs: do not send close in compound create+close requests 2021-03-08 21:23:22 -06:00
smb2pdu.c cifs: ask for more credit on async read/write code paths 2021-03-06 11:35:57 -06:00
smb2pdu.h smb3: Fix out-of-bounds bug in SMB2_negotiate() 2021-02-01 22:43:39 -06:00
smb2proto.h cifs: do not send close in compound create+close requests 2021-03-08 21:23:22 -06:00
smb2status.h cifs: don't use __constant_cpu_to_le32() 2019-05-07 23:24:54 -05:00
smb2transport.c smb3.1.1: set gcm256 when requested 2020-10-19 15:11:11 -05:00
smbdirect.c cifs: Fix fall-through warnings for Clang 2020-12-13 19:12:07 -06:00
smbdirect.h cifs: smbd: Do not schedule work to send immediate packet on every receive 2020-04-07 12:41:16 -05:00
smbencrypt.c fs: cifs: move from the crypto cipher API to the new DES library interface 2019-08-22 14:57:34 +10:00
smberr.h
smbfsctl.h smb3: add some missing definitions from MS-FSCC 2020-10-23 15:38:10 -05:00
trace.c smb3: Cleanup license mess 2019-01-24 09:37:33 -06:00
trace.h cifs: Identify a connection by a conn_id. 2021-02-16 15:48:02 -06:00
transport.c cifs: do not send close in compound create+close requests 2021-03-08 21:23:22 -06:00
unc.c cifs: remove some minor warnings pointed out by kernel test robot 2020-12-14 09:16:23 -06:00
winucase.c Replace HTTP links with HTTPS ones: CIFS 2020-07-05 14:23:38 -06:00
xattr.c acl: handle idmapped mounts 2021-01-24 14:27:17 +01:00