aboutsummaryrefslogtreecommitdiffstats
path: root/fs
diff options
context:
space:
mode:
authorPetr Vandrovec <petr@vandrovec.name>2016-11-07 12:11:29 -0800
committerAnna Schumaker <Anna.Schumaker@Netapp.com>2016-11-07 16:11:29 -0500
commit8ef3295530ddc969ea9a3f307d94df97fcbc0629 (patch)
tree3c0e59bf61c4776fa97364bd0a30e13a410fdd02 /fs
parentSUNRPC: Fix suspicious RCU usage (diff)
downloadlinux-dev-8ef3295530ddc969ea9a3f307d94df97fcbc0629.tar.xz
linux-dev-8ef3295530ddc969ea9a3f307d94df97fcbc0629.zip
NFS: Ignore connections that have cl_rpcclient uninitialized
cl_rpcclient starts as ERR_PTR(-EINVAL), and connections like that are floating freely through the system. Most places check whether pointer is valid before dereferencing it, but newly added code in nfs_match_client does not. Which causes crashes when more than one NFS mount point is present. Signed-off-by: Petr Vandrovec <petr@vandrovec.name> Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
Diffstat (limited to 'fs')
-rw-r--r--fs/nfs/client.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/fs/nfs/client.c b/fs/nfs/client.c
index 7555ba889d1f..ebecfb8fba06 100644
--- a/fs/nfs/client.c
+++ b/fs/nfs/client.c
@@ -314,7 +314,8 @@ static struct nfs_client *nfs_match_client(const struct nfs_client_initdata *dat
/* Match the full socket address */
if (!rpc_cmp_addr_port(sap, clap))
/* Match all xprt_switch full socket addresses */
- if (!rpc_clnt_xprt_switch_has_addr(clp->cl_rpcclient,
+ if (IS_ERR(clp->cl_rpcclient) ||
+ !rpc_clnt_xprt_switch_has_addr(clp->cl_rpcclient,
sap))
continue;