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 <hslester96@xxxxxxxxx> Yeah, that looks like a bug, will test. Reviewed-by: Darrick J. Wong <darrick.wong@xxxxxxxxxx> --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 >