mirror of
git://sourceware.org/git/lvm2.git
synced 2025-01-06 17:18:29 +03:00
Fix unhandled condition in _move_lv_segments
If _move_lv_segments is passed a 'lv_from' that does not yet have any segments, it will screw things up because the code that does the segment copy assumes there is at least one segment. See copy code here: lv_to->segments = lv_from->segments; lv_to->segments.n->p = &lv_to->segments; lv_to->segments.p->n = &lv_to->segments; If 'segments' is an empty list, the first statement copies over the values, but the next two reset those values to point to the other LV's list structure. 'lv_to' now appears to have one segment, but it is really an ill-set pointer.
This commit is contained in:
parent
e720e51548
commit
d010b440a3
@ -2950,7 +2950,8 @@ static int _move_lv_segments(struct logical_volume *lv_to,
|
||||
}
|
||||
}
|
||||
|
||||
lv_to->segments = lv_from->segments;
|
||||
if (!dm_list_empty(&lv_from->segments))
|
||||
lv_to->segments = lv_from->segments;
|
||||
lv_to->segments.n->p = &lv_to->segments;
|
||||
lv_to->segments.p->n = &lv_to->segments;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user