Miao Xie
2012-May-17 11:58 UTC
[PATCH 5/5] Btrfs: fix memory leak in btrfs_pause_balance()
We forget to free fs_info->balance_ctl in the btrfs_pause_balance() when umounting the fs. Signed-off-by: Miao Xie <miaox@cn.fujitsu.com> --- fs/btrfs/volumes.c | 3 +++ 1 files changed, 3 insertions(+), 0 deletions(-) diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c index c536d52..fd7fe80 100644 --- a/fs/btrfs/volumes.c +++ b/fs/btrfs/volumes.c @@ -2937,6 +2937,9 @@ int btrfs_pause_balance(struct btrfs_fs_info *fs_info) ret = -ENOTCONN; } + if (btrfs_fs_closing(fs_info) && fs_info->balance_ctl) + unset_balance_control(fs_info); + mutex_unlock(&fs_info->balance_mutex); return ret; } -- 1.7.6.5 -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Ilya Dryomov
2012-May-17 15:20 UTC
Re: [PATCH 5/5] Btrfs: fix memory leak in btrfs_pause_balance()
On Thu, May 17, 2012 at 07:58:53PM +0800, Miao Xie wrote:> We forget to free fs_info->balance_ctl in the btrfs_pause_balance() > when umounting the fs. > > Signed-off-by: Miao Xie <miaox@cn.fujitsu.com> > --- > fs/btrfs/volumes.c | 3 +++ > 1 files changed, 3 insertions(+), 0 deletions(-) > > diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c > index c536d52..fd7fe80 100644 > --- a/fs/btrfs/volumes.c > +++ b/fs/btrfs/volumes.c > @@ -2937,6 +2937,9 @@ int btrfs_pause_balance(struct btrfs_fs_info *fs_info) > ret = -ENOTCONN; > } > > + if (btrfs_fs_closing(fs_info) && fs_info->balance_ctl) > + unset_balance_control(fs_info); > + > mutex_unlock(&fs_info->balance_mutex); > return ret; > }It is kfree()''d in free_fs_info(), which should be called on unmount. Am I missing something here ? Thanks, Ilya -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Miao Xie
2012-May-18 03:12 UTC
Re: [PATCH 5/5] Btrfs: fix memory leak in btrfs_pause_balance()
On thu, 17 May 2012 18:20:04 +0300, Ilya Dryomov wrote:> On Thu, May 17, 2012 at 07:58:53PM +0800, Miao Xie wrote: >> We forget to free fs_info->balance_ctl in the btrfs_pause_balance() >> when umounting the fs. >> >> Signed-off-by: Miao Xie <miaox@cn.fujitsu.com> >> --- >> fs/btrfs/volumes.c | 3 +++ >> 1 files changed, 3 insertions(+), 0 deletions(-) >> >> diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c >> index c536d52..fd7fe80 100644 >> --- a/fs/btrfs/volumes.c >> +++ b/fs/btrfs/volumes.c >> @@ -2937,6 +2937,9 @@ int btrfs_pause_balance(struct btrfs_fs_info *fs_info) >> ret = -ENOTCONN; >> } >> >> + if (btrfs_fs_closing(fs_info) && fs_info->balance_ctl) >> + unset_balance_control(fs_info); >> + >> mutex_unlock(&fs_info->balance_mutex); >> return ret; >> } > > It is kfree()''d in free_fs_info(), which should be called on unmount. > Am I missing something here ?It is my mistake. Sorry. BTW I think freeing it in btrfs_pause_balance() is better because it is relative to the balance, or the readability will become worse. Thanks Miao -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html