linux-stable/fs/nfs
Trond Myklebust 44942b4e45 NFSv4: Handle the special Linux file open access mode
According to the open() manpage, Linux reserves the access mode 3
to mean "check for read and write permission on the file and return
a file descriptor that can't be used for reading or writing."

Currently, the NFSv4 code will ask the server to open the file,
and will use an incorrect share access mode of 0. Since it has
an incorrect share access mode, the client later forgets to send
a corresponding close, meaning it can leak stateids on the server.

Fixes: ce4ef7c0a8 ("NFS: Split out NFS v4 file operations")
Cc: stable@vger.kernel.org # 3.6+
Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
2019-07-06 14:54:25 -04:00
..
blocklayout treewide: Add SPDX license identifier - Makefile/Kconfig 2019-05-21 10:50:46 +02:00
filelayout treewide: Add SPDX license identifier - Makefile/Kconfig 2019-05-21 10:50:46 +02:00
flexfilelayout NFS/flexfiles: Use the correct TCP timeout for flexfiles I/O 2019-06-28 11:48:52 -04:00
Kconfig treewide: Add SPDX license identifier - Makefile/Kconfig 2019-05-21 10:50:46 +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
cache_lib.c NFS client updates for Linux 4.15 2017-11-17 14:18:00 -08:00
cache_lib.h NFS client updates for Linux 4.15 2017-11-17 14:18:00 -08:00
callback.c SUNRPC: Cache the process user cred in the RPC server listener 2019-04-24 09:46:35 -04:00
callback.h NFS CB_OFFLOAD xdr 2018-08-09 12:56:38 -04:00
callback_proc.c NFSv4.2 copy do not allocate memory under the lock 2018-11-22 13:54:46 -05:00
callback_xdr.c SUNRPC/nfs: Fix return value for nfs4_callback_compound() 2019-04-24 09:46:34 -04:00
client.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
delegation.c treewide: Add SPDX license identifier for missed files 2019-05-21 10:50:45 +02:00
delegation.h NFSv4: don't mark all open state for recovery when handling recallable state revoked flag 2019-05-09 16:26:57 -04:00
dir.c treewide: Add SPDX license identifier for missed files 2019-05-21 10:50:45 +02:00
direct.c treewide: Add SPDX license identifier for missed files 2019-05-21 10:50:45 +02:00
dns_resolve.c dns_resolver: Allow used keys to be invalidated 2019-05-15 17:35:54 +01:00
dns_resolve.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
export.c NFS: Pass the inode down to the getattr() callback 2018-06-04 12:07:07 -04:00
file.c treewide: Add SPDX license identifier for missed files 2019-05-21 10:50:45 +02:00
fscache-index.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 36 2019-05-24 17:27:11 +02:00
fscache.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 36 2019-05-24 17:27:11 +02:00
fscache.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 36 2019-05-24 17:27:11 +02:00
getroot.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
inode.c NFSv4: Handle the special Linux file open access mode 2019-07-06 14:54:25 -04:00
internal.h NFS client updates for Linux 5.2 2019-05-09 14:33:15 -07:00
io.c NFS: Fix up documentation warnings 2019-02-20 15:14:21 -05:00
iostat.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
mount_clnt.c SUNRPC: Cache cred of process creating the rpc_client 2019-04-26 16:00:48 -04:00
namespace.c treewide: Add SPDX license identifier for missed files 2019-05-21 10:50:45 +02:00
netns.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
nfs.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
nfs2super.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
nfs2xdr.c NFS: Convert NFSv2 to use the container user namespace 2019-04-26 17:26:37 -04:00
nfs3_fs.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
nfs3acl.c nfs: fix xfstest generic/099 failed on nfsv3 2019-02-20 17:33:55 -05:00
nfs3client.c treewide: Add SPDX license identifier for missed files 2019-05-21 10:50:45 +02:00
nfs3proc.c NFS/NFSD/SUNRPC: replace generic creds with 'struct cred'. 2018-12-19 13:52:46 -05:00
nfs3super.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
nfs3xdr.c NFS: Convert NFSv3 to use the container user namespace 2019-04-26 16:54:27 -04:00
nfs4_fs.h NFS: Allow signal interruption of NFS4ERR_DELAYed operations 2019-04-25 14:18:14 -04:00
nfs4client.c treewide: Add SPDX license identifier for missed files 2019-05-21 10:50:45 +02:00
nfs4file.c NFSv4: Handle the special Linux file open access mode 2019-07-06 14:54:25 -04:00
nfs4getroot.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
nfs4idmap.c NFSv4: Convert the NFS client idmapper to use the container user namespace 2019-04-26 17:10:53 -04:00
nfs4idmap.h NFS: Move nfs_idmap.h into fs/nfs/ 2015-04-23 15:16:14 -04:00
nfs4namespace.c NFS: Fix up documentation warnings 2019-02-20 15:14:21 -05:00
nfs4proc.c NFSv4: Handle open for execute correctly 2019-07-06 14:54:25 -04:00
nfs4renewd.c NFS/NFSD/SUNRPC: replace generic creds with 'struct cred'. 2018-12-19 13:52:46 -05:00
nfs4session.c treewide: Add SPDX license identifier for missed files 2019-05-21 10:50:45 +02:00
nfs4session.h NFSv4.1: Bump the default callback session slot count to 16 2019-03-02 16:25:26 -05:00
nfs4state.c NFSv4: don't mark all open state for recovery when handling recallable state revoked flag 2019-05-09 16:26:57 -04:00
nfs4super.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
nfs4sysctl.c nfs: Do not convert nfs_idmap_cache_timeout to jiffies 2018-01-18 15:10:47 -05:00
nfs4trace.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
nfs4trace.h NFS: Add trace events to report non-zero NFS status codes 2019-02-13 12:03:21 -05:00
nfs4xdr.c NFS: Fix handling of reply page vector 2019-04-11 15:23:48 -04:00
nfs42.h NFSv4.2: Add client support for the generic 'layouterror' RPC call 2019-03-01 16:20:16 -05:00
nfs42proc.c NFSv4.1 fix incorrect return value in copy_file_range 2019-04-11 15:23:48 -04:00
nfs42xdr.c NFSv4.2: Add client support for the generic 'layouterror' RPC call 2019-03-01 16:20:16 -05:00
nfsroot.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
nfstrace.c NFS: Add trace events to report non-zero NFS status codes 2019-02-13 12:03:21 -05:00
nfstrace.h NFS: Add trace events to report non-zero NFS status codes 2019-02-13 12:03:21 -05:00
pagelist.c treewide: Add SPDX license identifier for missed files 2019-05-21 10:50:45 +02:00
pnfs.c NFS: Add a helper to return a pointer to the open context of a struct nfs_page 2019-04-25 14:18:15 -04:00
pnfs.h NFS: Add a helper to return a pointer to the open context of a struct nfs_page 2019-04-25 14:18:15 -04:00
pnfs_dev.c NFS/flexfiles: Speed up read failover when DSes are down 2019-03-01 22:37:38 -05:00
pnfs_nfs.c treewide: Add SPDX license identifier for missed files 2019-05-21 10:50:45 +02:00
proc.c NFS/NFSD/SUNRPC: replace generic creds with 'struct cred'. 2018-12-19 13:52:46 -05:00
read.c treewide: Add SPDX license identifier for missed files 2019-05-21 10:50:45 +02:00
super.c treewide: Add SPDX license identifier for missed files 2019-05-21 10:50:45 +02:00
symlink.c nfs: pass the correct prototype to read_cache_page 2019-05-09 16:26:57 -04:00
sysctl.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
unlink.c NFS: Fix up documentation warnings 2019-02-20 15:14:21 -05:00
write.c treewide: Add SPDX license identifier for missed files 2019-05-21 10:50:45 +02:00