mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH] btrfs: zoned: fix double free of bitmaps on clone failure
@ 2026-10-28  9:50 Thomas Fourier
  2026-10-28 10:42 ` Johannes Thumshirn
  0 siblings, 1 reply; 2+ messages in thread
From: Thomas Fourier @ 2026-10-28  9:50 UTC (permalink / raw)
  Cc: Thomas Fourier, David Sterba, Chris Mason, Johannes Thumshirn,
	open list:BTRFS FILE SYSTEM, open list

btrfs_clone_dev_zone_info() duplicates the original orig_dev->zone_info
with kmemdup(), which also copies the seq_zones, empty_zones and
active_zones pointers. The clone then replaces them one by one with
fresh bitmaps. If one of the allocations fails, the error path frees all
three pointers, including those not yet replaced, which still point to
the bitmaps owned by the original device.

Clear the three pointers right after kmemdup() so the error path only frees
what this function allocated.

Fixes: 21e61ec6d0bb ("btrfs: zoned: clone zoned device info when cloning a device")
Signed-off-by: Thomas Fourier <fourier.thomas@gmail.com>
---
 fs/btrfs/zoned.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/fs/btrfs/zoned.c b/fs/btrfs/zoned.c
index 08a15465a087..7dab7aac7b96 100644
--- a/fs/btrfs/zoned.c
+++ b/fs/btrfs/zoned.c
@@ -645,6 +645,11 @@ struct btrfs_zoned_device_info *btrfs_clone_dev_zone_info(struct btrfs_device *o
 	if (!zone_info)
 		return NULL;
 
+	/* Don't let the error path free the bitmaps still owned by @orig_dev. */
+	zone_info->seq_zones = NULL;
+	zone_info->empty_zones = NULL;
+	zone_info->active_zones = NULL;
+
 	zone_info->seq_zones = bitmap_zalloc(zone_info->nr_zones, GFP_KERNEL);
 	if (!zone_info->seq_zones)
 		goto out;
-- 
2.53.0


^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [PATCH] btrfs: zoned: fix double free of bitmaps on clone failure
  2026-10-28  9:50 [PATCH] btrfs: zoned: fix double free of bitmaps on clone failure Thomas Fourier
@ 2026-10-28 10:42 ` Johannes Thumshirn
  0 siblings, 0 replies; 2+ messages in thread
From: Johannes Thumshirn @ 2026-10-28 10:42 UTC (permalink / raw)
  To: Thomas Fourier
  Cc: David Sterba, Chris Mason, open list:BTRFS FILE SYSTEM, open list

Looks good,

Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2026-10-28 10:43 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-10-28  9:50 [PATCH] btrfs: zoned: fix double free of bitmaps on clone failure Thomas Fourier
2026-10-28 10:42 ` Johannes Thumshirn

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®