[lvm-devel] master - raid: more coverity issues

Heinz Mauelshagen heinzm at sourceware.org
Thu Mar 30 16:43:40 UTC 2017


Gitweb:        https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=980e4f673eb9189f9fe2dd5844a56f107d078f40
Commit:        980e4f673eb9189f9fe2dd5844a56f107d078f40
Parent:        c34ab29ec6c3e737b65a1b589ef4091944a5127d
Author:        Heinz Mauelshagen <heinzm at redhat.com>
AuthorDate:    Thu Mar 30 18:39:04 2017 +0200
Committer:     Heinz Mauelshagen <heinzm at redhat.com>
CommitterDate: Thu Mar 30 18:39:04 2017 +0200

raid: more coverity issues

---
 lib/metadata/raid_manip.c |   14 ++++++++------
 1 files changed, 8 insertions(+), 6 deletions(-)

diff --git a/lib/metadata/raid_manip.c b/lib/metadata/raid_manip.c
index 8e5b1a8..63a2a6c 100644
--- a/lib/metadata/raid_manip.c
+++ b/lib/metadata/raid_manip.c
@@ -751,6 +751,11 @@ static int _reorder_raid10_near_seg_areas(struct lv_segment *seg, enum raid0_rai
 	uint32_t *idx, stripes = seg->area_count;
 	unsigned i = 0;
 
+	if (!stripes) {
+		log_error(INTERNAL_ERROR "stripes may not be 0.");
+		return 0;
+	}
+
 	/* Internal sanity checks... */
 	if (!(conv == reorder_to_raid10_near || conv == reorder_from_raid10_near))
 		return_0;
@@ -2082,7 +2087,7 @@ static int _activate_sub_lvs_excl_local(struct logical_volume *lv, uint32_t star
 			   display_lvname(lv));
 	for (s = start_idx; s < seg->area_count; s++)
 		if (!_activate_sub_lv_excl_local(seg_lv(seg, s)) ||
-		    !_activate_sub_lv_excl_local(seg_metalv(seg, s)))
+		    (seg->meta_areas && !_activate_sub_lv_excl_local(seg_metalv(seg, s))))
 			return 0;
 
 	return 1;
@@ -4598,7 +4603,7 @@ static int _clear_meta_lvs(struct logical_volume *lv)
 	struct lv_segment_area *tmp_areas;
 	const struct segment_type *tmp_segtype;
 	struct dm_list meta_lvs;
-	struct lv_list *lvl_array, *lvl;
+	struct lv_list *lvl;
 	int is_raid45n10 = seg_is_raid4(seg) || seg_is_raid5_n(seg) || seg_is_raid10(seg);
 
 	/* Reject non-raid0_meta/raid4/raid5_n segment types cautiously */
@@ -4606,9 +4611,6 @@ static int _clear_meta_lvs(struct logical_volume *lv)
 	    (!seg_is_raid0_meta(seg) && !is_raid45n10))
 		return_0;
 
-	if (!(lvl_array = dm_pool_alloc(lv->vg->vgmem, seg->area_count * sizeof(*lvl_array))))
-		return_0;
-
 	dm_list_init(&meta_lvs);
 	tmp_segtype = seg->segtype;
 	tmp_areas = seg->meta_areas;
@@ -5894,7 +5896,7 @@ int lv_raid_convert(struct logical_volume *lv,
 	struct lv_segment *seg = first_seg(lv);
 	uint32_t stripes = new_stripes, stripe_size;
 	uint32_t new_image_count = seg->area_count;
-	uint32_t region_size = new_region_size;
+	uint32_t region_size;
 	uint32_t data_copies = seg->data_copies;
 	uint32_t available_slvs, removed_slvs;
 	takeover_fn_t takeover_fn;




More information about the lvm-devel mailing list