2020-06-03 09:29:45

by Chuhong Yuan

[permalink] [raw]
Subject: [PATCH] xfs: Add the missed xfs_perag_put() for xfs_ifree_cluster()

xfs_ifree_cluster() calls xfs_perag_get() at the beginning, but forgets to
call xfs_perag_put() in one failed path.
Add the missed function call to fix it.

Fixes: ce92464c180b ("xfs: make xfs_trans_get_buf return an error code")
Signed-off-by: Chuhong Yuan <[email protected]>
---
fs/xfs/xfs_inode.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/fs/xfs/xfs_inode.c b/fs/xfs/xfs_inode.c
index d1772786af29..8845faa8161a 100644
--- a/fs/xfs/xfs_inode.c
+++ b/fs/xfs/xfs_inode.c
@@ -2639,8 +2639,10 @@ xfs_ifree_cluster(
error = xfs_trans_get_buf(tp, mp->m_ddev_targp, blkno,
mp->m_bsize * igeo->blocks_per_cluster,
XBF_UNMAPPED, &bp);
- if (error)
+ if (error) {
+ xfs_perag_put(pag);
return error;
+ }

/*
* This buffer may not have been correctly initialised as we
--
2.26.2


2020-06-03 16:29:13

by Darrick J. Wong

[permalink] [raw]
Subject: Re: [PATCH] xfs: Add the missed xfs_perag_put() for xfs_ifree_cluster()

On Wed, Jun 03, 2020 at 05:27:07PM +0800, Chuhong Yuan wrote:
> xfs_ifree_cluster() calls xfs_perag_get() at the beginning, but forgets to
> call xfs_perag_put() in one failed path.
> Add the missed function call to fix it.
>
> Fixes: ce92464c180b ("xfs: make xfs_trans_get_buf return an error code")
> Signed-off-by: Chuhong Yuan <[email protected]>

Yeah, that looks like a bug, will test.
Reviewed-by: Darrick J. Wong <[email protected]>

--D

> ---
> fs/xfs/xfs_inode.c | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/fs/xfs/xfs_inode.c b/fs/xfs/xfs_inode.c
> index d1772786af29..8845faa8161a 100644
> --- a/fs/xfs/xfs_inode.c
> +++ b/fs/xfs/xfs_inode.c
> @@ -2639,8 +2639,10 @@ xfs_ifree_cluster(
> error = xfs_trans_get_buf(tp, mp->m_ddev_targp, blkno,
> mp->m_bsize * igeo->blocks_per_cluster,
> XBF_UNMAPPED, &bp);
> - if (error)
> + if (error) {
> + xfs_perag_put(pag);
> return error;
> + }
>
> /*
> * This buffer may not have been correctly initialised as we
> --
> 2.26.2
>