From: Sage Weil <sage@newdream.net>
Date: Fri, 17 Dec 2010 17:53:41 +0000 (-0800)
Subject: ceph: fix null pointer dereference in ceph_init_dentry for nfs reexport
X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=92cf765237e2787eb168096305c448caf25ac7f8;p=linux.git

ceph: fix null pointer dereference in ceph_init_dentry for nfs reexport

The fh_to_dentry etc. methods use ceph_init_dentry(), which assumes that
d_parent is defined.  It isn't for those callers, so check!

Signed-off-by: Sage Weil <sage@newdream.net>
---

diff --git a/fs/ceph/dir.c b/fs/ceph/dir.c
index 158c700fdca5e..d902948a90d88 100644
--- a/fs/ceph/dir.c
+++ b/fs/ceph/dir.c
@@ -40,7 +40,8 @@ int ceph_init_dentry(struct dentry *dentry)
 	if (dentry->d_fsdata)
 		return 0;
 
-	if (ceph_snap(dentry->d_parent->d_inode) == CEPH_NOSNAP)
+	if (dentry->d_parent == NULL ||   /* nfs fh_to_dentry */
+	    ceph_snap(dentry->d_parent->d_inode) == CEPH_NOSNAP)
 		dentry->d_op = &ceph_dentry_ops;
 	else if (ceph_snap(dentry->d_parent->d_inode) == CEPH_SNAPDIR)
 		dentry->d_op = &ceph_snapdir_dentry_ops;