linux/fs/nfsd
Stanislav Kinsbursky 3064639423 nfsd: check passed socket's net matches NFSd superblock's one
There could be a case, when NFSd file system is mounted in network, different
to socket's one, like below:

"ip netns exec" creates new network and mount namespace, which duplicates NFSd
mount point, created in init_net context. And thus NFS server stop in nested
network context leads to RPCBIND client destruction in init_net.
Then, on NFSd start in nested network context, rpc.nfsd process creates socket
in nested net and passes it into "write_ports", which leads to RPCBIND sockets
creation in init_net context because of the same reason (NFSd monut point was
created in init_net context). An attempt to register passed socket in nested
net leads to panic, because no RPCBIND client present in nexted network
namespace.

This patch add check that passed socket's net matches NFSd superblock's one.
And returns -EINVAL error to user psace otherwise.

v2: Put socket on exit.

Reported-by: Weng Meiling <wengmeiling.weng@huawei.com>
Signed-off-by: Stanislav Kinsbursky <skinsbursky@parallels.com>
Cc: stable@vger.kernel.org
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
2014-03-31 16:58:16 -04:00
..
acl.h nfsd4: use more generous NFS4_ACL_MAX 2014-03-28 21:24:53 -04:00
auth.c nfsd: Properly compare and initialize kuids and kgids 2013-02-13 06:16:09 -08:00
auth.h nfsd: Remove nfsd_luid, nfsd_lgid, nfsd_ruid and nfsd_rgid 2013-02-13 06:15:51 -08:00
cache.h nfsd: get rid of unused function definition 2014-01-02 17:53:23 -05:00
current_stateid.h nfsd41: use current stateid by value 2012-02-15 11:20:45 -05:00
export.c nfsd: -EINVAL on invalid anonuid/gid instead of silent failure 2013-10-29 17:46:14 -04:00
fault_inject.c Merge branch 'for-3.9' of git://linux-nfs.org/~bfields/linux 2013-02-28 18:02:55 -08:00
idmap.h nfsd4: simplify xdr encoding of nfsv4 names 2014-01-08 12:18:53 -05:00
Kconfig nfsd: fix Kconfig syntax 2013-10-26 15:37:26 -04:00
lockd.c nfsd: Remove deprecated nfsctl system call and related code. 2011-07-15 18:58:42 -04:00
Makefile NFSD: Added fault injection 2011-11-07 21:10:47 -05:00
netns.h NFSD: Don't start lockd when only NFSv4 is running 2014-01-03 18:18:50 -05:00
nfs2acl.c nfsd: use get_acl and ->set_acl 2014-01-26 08:26:41 -05:00
nfs3acl.c nfsd: use get_acl and ->set_acl 2014-01-26 08:26:41 -05:00
nfs3proc.c switch vfs_getattr() to struct path 2013-02-26 02:46:08 -05:00
nfs3xdr.c nfsd: fix encode_entryplus_baggage stack usage 2014-01-23 13:50:27 -05:00
nfs4acl.c nfsd4: fix acl buffer overrun 2014-02-11 13:48:11 -05:00
nfs4callback.c NFSD/SUNRPC: Check rpc_xprt out of xs_setup_bc_tcp 2014-03-30 10:47:36 -04:00
nfs4idmap.c nfsd4: simplify xdr encoding of nfsv4 names 2014-01-08 12:18:53 -05:00
nfs4proc.c NFSD: Clear wcc data between compound ops 2014-03-30 10:47:34 -04:00
nfs4recover.c nfsd: switch to %p[dD] 2013-10-24 23:34:51 -04:00
nfs4state.c nfsd: Don't return NFS4ERR_STALE_STATEID for NFSv4.1+ 2014-03-30 10:47:33 -04:00
nfs4xdr.c nfsd4: fix nfs4err_resource in 4.1 case 2014-03-28 21:24:56 -04:00
nfscache.c nfsd: don't try to reuse an expired DRC entry off the list 2013-12-11 11:27:04 -05:00
nfsctl.c nfsd: check passed socket's net matches NFSd superblock's one 2014-03-31 16:58:16 -04:00
nfsd.h nfsd4: leave reply buffer space for failed setattr 2014-03-27 16:31:09 -04:00
nfsfh.c nfsd: fh_update should error out in unexpected cases 2013-10-29 17:43:52 -04:00
nfsfh.h NFSD: Clear wcc data between compound ops 2014-03-30 10:47:34 -04:00
nfsproc.c switch vfs_getattr() to struct path 2013-02-26 02:46:08 -05:00
nfssvc.c NFSD: fix compile warning without CONFIG_NFSD_V3 2014-01-06 12:23:31 -05:00
nfsxdr.c nfsd: don't return high mode bits 2013-12-10 20:35:58 -05:00
state.h nfsd4: implement minimal SP4_MACH_CRED 2013-07-01 17:23:06 -04:00
stats.c SUNRPC: register service stats /proc entries in passed network namespace context 2012-01-31 19:28:18 -05:00
vfs.c nfsd: typo in nfsd_rename comment 2014-03-28 18:02:11 -04:00
vfs.h Merge branch 'for-3.14' of git://linux-nfs.org/~bfields/linux 2014-01-30 10:18:43 -08:00
xdr3.h nfsd: fix encode_entryplus_baggage stack usage 2014-01-23 13:50:27 -05:00
xdr4.h nfsd4: nfsd4_replay_cache_entry should be static 2014-03-28 21:24:51 -04:00
xdr4cb.h nfsd4: check backchannel attributes on create_session 2013-04-09 16:53:56 -04:00
xdr.h nfsd: handle vfs_getattr errors in acl protocol 2013-02-26 02:46:09 -05:00