diff mbox

btrfs: fix memory leak during RAID 5/6 device replacement

Message ID 1462799668-26910-1-git-send-email-scott.talbert@hgst.com (mailing list archive)
State Accepted
Headers show

Commit Message

Scott Talbert May 9, 2016, 1:14 p.m. UTC
A 'struct bio' is allocated in scrub_missing_raid56_pages(), but it was never
freed anywhere.

Signed-off-by: Scott Talbert <scott.talbert@hgst.com>
---
 fs/btrfs/scrub.c | 2 ++
 1 file changed, 2 insertions(+)

Comments

David Sterba May 9, 2016, 5:32 p.m. UTC | #1
CC Zhao Lei <zhaolei@cn.fujitsu.com>

On Mon, May 09, 2016 at 09:14:28AM -0400, Scott Talbert wrote:
> A 'struct bio' is allocated in scrub_missing_raid56_pages(), but it was never
> freed anywhere.
> 
> Signed-off-by: Scott Talbert <scott.talbert@hgst.com>
> ---
>  fs/btrfs/scrub.c | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/fs/btrfs/scrub.c b/fs/btrfs/scrub.c
> index 82bedf9..607cc6e 100644
> --- a/fs/btrfs/scrub.c
> +++ b/fs/btrfs/scrub.c
> @@ -2130,6 +2130,8 @@ static void scrub_missing_raid56_end_io(struct bio *bio)
>  	if (bio->bi_error)
>  		sblock->no_io_error_seen = 0;
>  
> +	bio_put(bio);
> +
>  	btrfs_queue_work(fs_info->scrub_workers, &sblock->work);
>  }
>  
> -- 
> 1.9.1
> 
> --
> 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
--
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
Zhaolei May 13, 2016, 10:31 a.m. UTC | #2
Hi, Scott Talbert

* From: David Sterba [mailto:dsterba@suse.cz]
> Sent: Tuesday, May 10, 2016 1:32 AM
> To: Scott Talbert <scott.talbert@hgst.com>
> Cc: linux-btrfs@vger.kernel.org; Zhao Lei <zhaolei@cn.fujitsu.com>
> Subject: Re: [PATCH] btrfs: fix memory leak during RAID 5/6 device replacement
> 
> CC Zhao Lei <zhaolei@cn.fujitsu.com>
> 
> On Mon, May 09, 2016 at 09:14:28AM -0400, Scott Talbert wrote:
> > A 'struct bio' is allocated in scrub_missing_raid56_pages(), but it was never
> > freed anywhere.
> >
> > Signed-off-by: Scott Talbert <scott.talbert@hgst.com>
> > ---
> >  fs/btrfs/scrub.c | 2 ++
> >  1 file changed, 2 insertions(+)
> >
> > diff --git a/fs/btrfs/scrub.c b/fs/btrfs/scrub.c
> > index 82bedf9..607cc6e 100644
> > --- a/fs/btrfs/scrub.c
> > +++ b/fs/btrfs/scrub.c
> > @@ -2130,6 +2130,8 @@ static void scrub_missing_raid56_end_io(struct
> bio *bio)
> >  	if (bio->bi_error)
> >  		sblock->no_io_error_seen = 0;
> >
> > +	bio_put(bio);
> > +
Seems good by reviewing.
I'll add some debug code to test it more detailedly.

Thanks
Zhaolei

> >  	btrfs_queue_work(fs_info->scrub_workers, &sblock->work);
> >  }
> >
> > --
> > 1.9.1
> >
> > --
> > 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




--
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
Zhaolei May 16, 2016, 12:34 p.m. UTC | #3
Hi, Scott Talbert

> From: Zhao Lei [mailto:zhaolei@cn.fujitsu.com]
> Sent: Friday, May 13, 2016 6:31 PM
> To: 'dsterba@suse.cz' <dsterba@suse.cz>; 'Scott Talbert'
> <scott.talbert@hgst.com>
> Cc: 'linux-btrfs@vger.kernel.org' <linux-btrfs@vger.kernel.org>
> Subject: RE: [PATCH] btrfs: fix memory leak during RAID 5/6 device replacement
> 
> Hi, Scott Talbert
> 
> * From: David Sterba [mailto:dsterba@suse.cz]
> > Sent: Tuesday, May 10, 2016 1:32 AM
> > To: Scott Talbert <scott.talbert@hgst.com>
> > Cc: linux-btrfs@vger.kernel.org; Zhao Lei <zhaolei@cn.fujitsu.com>
> > Subject: Re: [PATCH] btrfs: fix memory leak during RAID 5/6 device
> replacement
> >
> > CC Zhao Lei <zhaolei@cn.fujitsu.com>
> >
> > On Mon, May 09, 2016 at 09:14:28AM -0400, Scott Talbert wrote:
> > > A 'struct bio' is allocated in scrub_missing_raid56_pages(), but it was never
> > > freed anywhere.
> > >
> > > Signed-off-by: Scott Talbert <scott.talbert@hgst.com>
> > > ---
> > >  fs/btrfs/scrub.c | 2 ++
> > >  1 file changed, 2 insertions(+)
> > >
> > > diff --git a/fs/btrfs/scrub.c b/fs/btrfs/scrub.c
> > > index 82bedf9..607cc6e 100644
> > > --- a/fs/btrfs/scrub.c
> > > +++ b/fs/btrfs/scrub.c
> > > @@ -2130,6 +2130,8 @@ static void scrub_missing_raid56_end_io(struct
> > bio *bio)
> > >  	if (bio->bi_error)
> > >  		sblock->no_io_error_seen = 0;
> > >
> > > +	bio_put(bio);
> > > +
> Seems good by reviewing.
> I'll add some debug code to test it more detailedly.
> 
Signed-off-by: Zhao Lei <zhaolei@cn.fujitsu.com>
Test-by: Zhao Lei <zhaolei@cn.fujitsu.com>

Thanks
Zhaolei

> Thanks
> Zhaolei
> 
> > >  	btrfs_queue_work(fs_info->scrub_workers, &sblock->work);
> > >  }
> > >
> > > --
> > > 1.9.1
> > >
> > > --
> > > 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




--
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
diff mbox

Patch

diff --git a/fs/btrfs/scrub.c b/fs/btrfs/scrub.c
index 82bedf9..607cc6e 100644
--- a/fs/btrfs/scrub.c
+++ b/fs/btrfs/scrub.c
@@ -2130,6 +2130,8 @@  static void scrub_missing_raid56_end_io(struct bio *bio)
 	if (bio->bi_error)
 		sblock->no_io_error_seen = 0;
 
+	bio_put(bio);
+
 	btrfs_queue_work(fs_info->scrub_workers, &sblock->work);
 }