mirror of
https://github.com/raspberrypi/linux.git
synced 2025-12-06 01:49:46 +00:00
btrfs: scrub: put bio after errors in scrub_raid56_parity_stripe()
scrub_raid56_parity_stripe() allocates a bio with bio_alloc(), but
fails to release it on some error paths, leading to a potential
memory leak.
Add the missing bio_put() calls to properly drop the bio reference
in those error cases.
Fixes: 1009254bf2 ("btrfs: scrub: use scrub_stripe to implement RAID56 P/Q scrub")
CC: stable@vger.kernel.org # 6.6+
Reviewed-by: Qu Wenruo <wqu@suse.com>
Signed-off-by: Zilin Guan <zilin@seu.edu.cn>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
@@ -2203,6 +2203,7 @@ static int scrub_raid56_parity_stripe(struct scrub_ctx *sctx,
|
||||
ret = btrfs_map_block(fs_info, BTRFS_MAP_WRITE, full_stripe_start,
|
||||
&length, &bioc, NULL, NULL);
|
||||
if (ret < 0) {
|
||||
bio_put(bio);
|
||||
btrfs_put_bioc(bioc);
|
||||
btrfs_bio_counter_dec(fs_info);
|
||||
goto out;
|
||||
@@ -2212,6 +2213,7 @@ static int scrub_raid56_parity_stripe(struct scrub_ctx *sctx,
|
||||
btrfs_put_bioc(bioc);
|
||||
if (!rbio) {
|
||||
ret = -ENOMEM;
|
||||
bio_put(bio);
|
||||
btrfs_bio_counter_dec(fs_info);
|
||||
goto out;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user