summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPrasad P <pvp@us.ibm.com>2007-10-24 22:14:32 +0200
committerJ. Bruce Fields <bfields@citi.umich.edu>2008-02-01 22:42:01 +0100
commitaefa89d178e6dd83889b66d4e800d4d77363900b (patch)
tree8b4c68d21af0d3342905f6fa58d3af231004a317
parentnfsd: move callback rpc_client creation into separate thread (diff)
downloadlinux-aefa89d178e6dd83889b66d4e800d4d77363900b.tar.xz
linux-aefa89d178e6dd83889b66d4e800d4d77363900b.zip
nfsd: Fix inconsistent assignment
Dereferenced pointer "dentry" without checking and assigned to inode in the declaration. (We could just delete the NULL checks that follow instead, as we never get to the encode function in this particular case. But it takes a little detective work to verify that fact, so it's probably safer to leave the checks in place.) Cc: Steve French <smfltc@us.ibm.com> Signed-off-by: Prasad V Potluri <pvp@us.ibm.com> Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>
-rw-r--r--fs/nfsd/nfs2acl.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/fs/nfsd/nfs2acl.c b/fs/nfsd/nfs2acl.c
index 0e5fa11e6b44..1c3b7654e966 100644
--- a/fs/nfsd/nfs2acl.c
+++ b/fs/nfsd/nfs2acl.c
@@ -221,12 +221,17 @@ static int nfsaclsvc_encode_getaclres(struct svc_rqst *rqstp, __be32 *p,
struct nfsd3_getaclres *resp)
{
struct dentry *dentry = resp->fh.fh_dentry;
- struct inode *inode = dentry->d_inode;
+ struct inode *inode;
struct kvec *head = rqstp->rq_res.head;
unsigned int base;
int n;
int w;
+ /*
+ * Since this is version 2, the check for nfserr in
+ * nfsd_dispatch actually ensures the following cannot happen.
+ * However, it seems fragile to depend on that.
+ */
if (dentry == NULL || dentry->d_inode == NULL)
return 0;
inode = dentry->d_inode;