From: Sage Weil Date: Mon, 12 Apr 2010 21:24:28 +0000 (-0700) Subject: ceph: fix dentry reference leak in dcache readdir X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=f5b066287c74b624583b993395a65d03a6487b3a;p=sagit-ice-cold%2Fkernel_xiaomi_msm8998.git ceph: fix dentry reference leak in dcache readdir When filldir returned an error (e.g. buffer full for a large directory), we would leak a dentry reference, causing an oops on umount. Signed-off-by: Sage Weil --- diff --git a/fs/ceph/dir.c b/fs/ceph/dir.c index aed8fda33024..7505b4f1f597 100644 --- a/fs/ceph/dir.c +++ b/fs/ceph/dir.c @@ -170,11 +170,11 @@ more: spin_lock(&inode->i_lock); spin_lock(&dcache_lock); + last = dentry; + if (err < 0) goto out_unlock; - last = dentry; - p = p->prev; filp->f_pos++;