1
0
mirror of git://sourceware.org/git/lvm2.git synced 2025-03-10 16:58:47 +03:00

When up-converting a RAID1 array, we need to allocate new larger arrays for

seg->areas and seg->meta_areas.  We also need to copy the memory from the
old arrays to the newly allocated arrays.  The amount of memory to copy was
determined by seg->area_count.  However, seg->area_count was being set to the
higher value after copying the 'seg->areas' information, but before copying
the 'seg->meta_areas' information.  This means we were copying more memory
than necessary for 'seg->meta_areas' - something that could lead to a segfault.
This commit is contained in:
Jonathan Earl Brassow 2011-09-22 15:33:21 +00:00
parent f79f7250ce
commit 40c85cf1d7

View File

@ -499,7 +499,6 @@ to be left for these sub-lvs.
goto fail;
memcpy(new_areas, seg->areas, seg->area_count * sizeof(*seg->areas));
seg->areas = new_areas;
seg->area_count = new_count;
/* Expand meta_areas array */
if (!(new_areas = dm_pool_zalloc(lv->vg->cmd->mem,
@ -508,6 +507,7 @@ to be left for these sub-lvs.
memcpy(new_areas, seg->meta_areas,
seg->area_count * sizeof(*seg->meta_areas));
seg->meta_areas = new_areas;
seg->area_count = new_count;
/* Set segment areas for metadata sub_lvs */
s = old_count;