From 47b29c74ffd3ee1c7f2866c7d8a09bda8dbfd3cc Mon Sep 17 00:00:00 2001 From: "J. Bruce Fields" Date: Sat, 9 Apr 2011 11:28:53 -0400 Subject: [PATCH] --- yaml --- r: 252819 b: refs/heads/master c: 29a78a3ed7fc9c4ee49962751eb321b038c190a2 h: refs/heads/master i: 252817: e1823231f0f4fc46290f1c0a4437b431f0475182 252815: e6602c994c73b2746cc72b1ebcabec909a2c0375 v: v3 --- [refs] | 2 +- trunk/fs/nfsd/nfs4proc.c | 3 +++ trunk/fs/nfsd/vfs.c | 9 +++------ 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/[refs] b/[refs] index 9ef25e3fbef0..ba10a469b86a 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 22b03214962ec2a9748abc9987fc2e66dec4626d +refs/heads/master: 29a78a3ed7fc9c4ee49962751eb321b038c190a2 diff --git a/trunk/fs/nfsd/nfs4proc.c b/trunk/fs/nfsd/nfs4proc.c index 126b8f75b576..8059adae013b 100644 --- a/trunk/fs/nfsd/nfs4proc.c +++ b/trunk/fs/nfsd/nfs4proc.c @@ -762,6 +762,9 @@ nfsd4_secinfo(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, __be32 err; fh_init(&resfh, NFS4_FHSIZE); + err = fh_verify(rqstp, &cstate->current_fh, S_IFDIR, NFSD_MAY_EXEC); + if (err) + return err; err = nfsd_lookup_dentry(rqstp, &cstate->current_fh, secinfo->si_name, secinfo->si_namelen, &exp, &dentry); diff --git a/trunk/fs/nfsd/vfs.c b/trunk/fs/nfsd/vfs.c index a76ef7e0b3d0..e53313972c30 100644 --- a/trunk/fs/nfsd/vfs.c +++ b/trunk/fs/nfsd/vfs.c @@ -181,16 +181,10 @@ nfsd_lookup_dentry(struct svc_rqst *rqstp, struct svc_fh *fhp, struct svc_export *exp; struct dentry *dparent; struct dentry *dentry; - __be32 err; int host_err; dprintk("nfsd: nfsd_lookup(fh %s, %.*s)\n", SVCFH_fmt(fhp), len,name); - /* Obtain dentry and export. */ - err = fh_verify(rqstp, fhp, S_IFDIR, NFSD_MAY_EXEC); - if (err) - return err; - dparent = fhp->fh_dentry; exp = fhp->fh_export; exp_get(exp); @@ -254,6 +248,9 @@ nfsd_lookup(struct svc_rqst *rqstp, struct svc_fh *fhp, const char *name, struct dentry *dentry; __be32 err; + err = fh_verify(rqstp, fhp, S_IFDIR, NFSD_MAY_EXEC); + if (err) + return err; err = nfsd_lookup_dentry(rqstp, fhp, name, len, &exp, &dentry); if (err) return err;