2010-01-11 18:37:01

by OGAWA Hirofumi

[permalink] [raw]
Subject: [PATCH] gfs2: Fix refcnt leak on gfs2_follow_link() error path


If ->follow_link handler return the error, it should decrement
nd->path refcnt.

This patch fix it.

Signed-off-by: OGAWA Hirofumi <[email protected]>
---

fs/gfs2/ops_inode.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

diff -puN fs/gfs2/ops_inode.c~namei-gfs2-follow_link-fix fs/gfs2/ops_inode.c
--- linux-2.6/fs/gfs2/ops_inode.c~namei-gfs2-follow_link-fix 2010-01-12 00:15:12.000000000 +0900
+++ linux-2.6-hirofumi/fs/gfs2/ops_inode.c 2010-01-12 00:15:12.000000000 +0900
@@ -1086,7 +1086,8 @@ static void *gfs2_follow_link(struct den
error = vfs_follow_link(nd, buf);
if (buf != array)
kfree(buf);
- }
+ } else
+ path_put(&nd->path);

return ERR_PTR(error);
}
_

--
OGAWA Hirofumi <[email protected]>


2010-01-12 09:48:24

by Steven Whitehouse

[permalink] [raw]
Subject: Re: [PATCH] gfs2: Fix refcnt leak on gfs2_follow_link() error path

Hi,

Thanks for the patch. I've pushed it into the GFS2 -fixes tree,

Steve.

On Tue, 2010-01-12 at 03:36 +0900, OGAWA Hirofumi wrote:
> If ->follow_link handler return the error, it should decrement
> nd->path refcnt.
>
> This patch fix it.
>
> Signed-off-by: OGAWA Hirofumi <[email protected]>
> ---
>
> fs/gfs2/ops_inode.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff -puN fs/gfs2/ops_inode.c~namei-gfs2-follow_link-fix fs/gfs2/ops_inode.c
> --- linux-2.6/fs/gfs2/ops_inode.c~namei-gfs2-follow_link-fix 2010-01-12 00:15:12.000000000 +0900
> +++ linux-2.6-hirofumi/fs/gfs2/ops_inode.c 2010-01-12 00:15:12.000000000 +0900
> @@ -1086,7 +1086,8 @@ static void *gfs2_follow_link(struct den
> error = vfs_follow_link(nd, buf);
> if (buf != array)
> kfree(buf);
> - }
> + } else
> + path_put(&nd->path);
>
> return ERR_PTR(error);
> }
> _
>