linux-stable/fs/nfsd
J. Bruce Fields 4aef760c28 nfsd4: readdirplus shouldn't return parent of export
commit 51b2ee7d00 upstream.

If you export a subdirectory of a filesystem, a READDIRPLUS on the root
of that export will return the filehandle of the parent with the ".."
entry.

The filehandle is optional, so let's just not return the filehandle for
".." if we're at the root of an export.

Note that once the client learns one filehandle outside of the export,
they can trivially access the rest of the export using further lookups.

However, it is also not very difficult to guess filehandles outside of
the export.  So exporting a subdirectory of a filesystem should
considered equivalent to providing access to the entire filesystem.  To
avoid confusion, we recommend only exporting entire filesystems.

Reported-by: Youjipeng <wangzhibei1999@gmail.com>
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
Cc: stable@vger.kernel.org
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-01-23 15:57:56 +01:00
..
acl.h nfsd: eliminate an unnecessary acl size limit 2019-08-28 21:13:45 -04:00
auth.c nfsd: auth: Fix gid sorting when rootsquash enabled 2018-01-22 20:13:07 -08:00
auth.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
blocklayout.c nfsd: convert fi_deleg_file and ls_file fields to nfsd_file 2019-08-19 11:09:09 -04:00
blocklayoutxdr.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
blocklayoutxdr.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
cache.h nfsd4: make drc_slab global, not per-net 2020-06-24 17:50:37 +02:00
current_stateid.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 nfsd: nfsd_file cache entries should be per net namespace 2019-09-10 09:23:41 -04:00
export.h knfsd: Allow lockless lookups of the exports 2018-10-29 16:58:04 -04:00
fault_inject.c nfsd: no need to check return value of debugfs_create functions 2019-07-03 16:57:17 +02:00
filecache.c nfsd: Fix a soft lockup race in nfsd_file_mark_find_or_create() 2020-10-01 13:17:28 +02:00
filecache.h nfsd: nfsd_file cache entries should be per net namespace 2019-09-10 09:23:41 -04:00
flexfilelayout.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
flexfilelayoutxdr.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
flexfilelayoutxdr.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
idmap.h
Kconfig nfsd: depend on CRYPTO_MD5 for legacy client tracking 2020-01-26 10:01:01 +01:00
lockd.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
Makefile nfsd: add a new struct file caching facility to nfsd 2019-08-19 11:00:39 -04:00
netns.h nfsd4: make drc_slab global, not per-net 2020-06-24 17:50:37 +02:00
nfs2acl.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
nfs3acl.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
nfs3proc.c nfsd: fix nfs read eof detection 2019-09-23 16:24:08 -04:00
nfs3xdr.c nfsd4: readdirplus shouldn't return parent of export 2021-01-23 15:57:56 +01:00
nfs4acl.c
nfs4callback.c nfsd: Fix svc_xprt refcnt leak when setup callback client failed 2020-06-24 17:50:17 +02:00
nfs4idmap.c nfsd: Fix misuse of strlcpy 2019-07-08 23:16:11 -04:00
nfs4layouts.c nfsd: fix delay timer on 32-bit architectures 2020-02-11 04:35:46 -08:00
nfs4proc.c NFSD fixing possible null pointer derefering in copy offload 2020-01-17 19:49:02 +01:00
nfs4recover.c nfsd: Fix cld_net->cn_tfm initialization 2020-01-17 19:48:47 +01:00
nfs4state.c nfsd: Don't add locks to closed or closing open stateids 2020-10-01 13:17:43 +02:00
nfs4xdr.c nfsd: Fix NFSv4 READ on RDMA when using readv 2020-08-11 15:33:42 +02:00
nfscache.c nfsd: safer handling of corrupted c_type 2020-06-24 17:50:38 +02:00
nfsctl.c nfsd: fix nfsdfs inode reference count leak 2020-07-09 09:37:53 +02:00
nfsd.h nfsd4: fix nfsdfs reference count loop 2020-07-09 09:37:53 +02:00
nfsfh.c nfsd: use true and false for boolean values 2018-08-09 16:11:21 -04:00
nfsfh.h This request is late, apologies. 2018-02-08 15:18:32 -08:00
nfsproc.c NFSD: Add missing NFSv2 .pc_func methods 2020-11-05 11:43:31 +01:00
nfssvc.c nfsd: Fix message level for normal termination 2020-12-30 11:51:22 +01:00
nfsxdr.c nfsd: knfsd must use the container user namespace 2019-04-24 09:46:35 -04:00
pnfs.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
state.h nfsd: fix jiffies/time_t mixup in LRU list 2020-02-11 04:35:47 -08:00
stats.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
stats.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
trace.c
trace.h nfsd: Fix a perf warning 2020-10-01 13:17:31 +02:00
vfs.c nfsd: apply umask on fs without ACL support 2020-07-09 09:37:55 +02:00
vfs.h nfsd: Ensure CLONE persists data and metadata changes to the target file 2019-12-13 08:42:51 +01:00
xdr.h NFSD: Clean up legacy NFS SYMLINK argument XDR decoders 2018-04-03 15:08:16 -04:00
xdr3.h nfsd: fix nfs read eof detection 2019-09-23 16:24:08 -04:00
xdr4.h nfsd: hook up nfs4_preprocess_stateid_op to the nfsd_file cache 2019-08-19 11:09:09 -04:00
xdr4cb.h NFSD CB_OFFLOAD xdr 2018-09-25 20:34:54 -04:00