| From foo@baz Wed Aug 22 09:42:09 CEST 2018 |
| From: "Yan, Zheng" <zyan@redhat.com> |
| Date: Tue, 19 Jun 2018 18:20:34 +0800 |
| Subject: ceph: fix dentry leak in splice_dentry() |
| |
| From: "Yan, Zheng" <zyan@redhat.com> |
| |
| [ Upstream commit 8b8f53af1ed9df88a4c0fbfdf3db58f62060edf3 ] |
| |
| In any case, d_splice_alias() does not drop reference of original |
| dentry. |
| |
| Signed-off-by: "Yan, Zheng" <zyan@redhat.com> |
| Reviewed-by: Jeff Layton <jlayton@redhat.com> |
| Signed-off-by: Ilya Dryomov <idryomov@gmail.com> |
| Signed-off-by: Sasha Levin <alexander.levin@microsoft.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| fs/ceph/inode.c | 1 + |
| 1 file changed, 1 insertion(+) |
| |
| --- a/fs/ceph/inode.c |
| +++ b/fs/ceph/inode.c |
| @@ -1077,6 +1077,7 @@ static struct dentry *splice_dentry(stru |
| if (IS_ERR(realdn)) { |
| pr_err("splice_dentry error %ld %p inode %p ino %llx.%llx\n", |
| PTR_ERR(realdn), dn, in, ceph_vinop(in)); |
| + dput(dn); |
| dn = realdn; /* note realdn contains the error */ |
| goto out; |
| } else if (realdn) { |