Commit cfc84c9f authored by Cyril Roelandt's avatar Cyril Roelandt Committed by Alex Elder
Browse files

ceph: fix dentry reference leak in ceph_encode_fh().



dput() was not called in the error path.

Signed-off-by: default avatarCyril Roelandt <tipecaml@gmail.com>
Reviewed-by: default avatarAlex Elder <elder@inktank.com>
parent 22cddde1
Loading
Loading
Loading
Loading
+3 −1
Original line number Original line Diff line number Diff line
@@ -56,13 +56,15 @@ static int ceph_encode_fh(struct inode *inode, u32 *rawfh, int *max_len,
	struct ceph_nfs_confh *cfh = (void *)rawfh;
	struct ceph_nfs_confh *cfh = (void *)rawfh;
	int connected_handle_length = sizeof(*cfh)/4;
	int connected_handle_length = sizeof(*cfh)/4;
	int handle_length = sizeof(*fh)/4;
	int handle_length = sizeof(*fh)/4;
	struct dentry *dentry = d_find_alias(inode);
	struct dentry *dentry;
	struct dentry *parent;
	struct dentry *parent;


	/* don't re-export snaps */
	/* don't re-export snaps */
	if (ceph_snap(inode) != CEPH_NOSNAP)
	if (ceph_snap(inode) != CEPH_NOSNAP)
		return -EINVAL;
		return -EINVAL;


	dentry = d_find_alias(inode);

	/* if we found an alias, generate a connectable fh */
	/* if we found an alias, generate a connectable fh */
	if (*max_len >= connected_handle_length && dentry) {
	if (*max_len >= connected_handle_length && dentry) {
		dout("encode_fh %p connectable\n", dentry);
		dout("encode_fh %p connectable\n", dentry);