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]>
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);
> }
> _
>