]> sourceware.org Git - lvm2.git/commitdiff
raid: use 64bit arithmetic
authorZdenek Kabelac <zkabelac@redhat.com>
Wed, 15 Mar 2017 23:51:52 +0000 (00:51 +0100)
committerZdenek Kabelac <zkabelac@redhat.com>
Thu, 16 Mar 2017 00:02:10 +0000 (01:02 +0100)
Coverity - keep  multiplication for size cals in 64bit
(otherwise it's just 32b x 32b)

lib/metadata/raid_manip.c
lib/report/report.c

index 9f0de4cc8d3ed27988fc5519a7f8af1d9b1ce1df..720337be1e6cfa1a21ff0dfef81e5aeccbc3f57a 100644 (file)
@@ -1690,7 +1690,7 @@ static int _reshape_adjust_to_size(struct logical_volume *lv,
 
        /* Externally visible LV size w/o reshape space */
        lv->le_count = seg->len = new_le_count;
-       lv->size = (lv->le_count - new_image_count * _reshape_len_per_dev(seg)) * lv->vg->extent_size;
+       lv->size = (uint64_t) (lv->le_count - new_image_count * _reshape_len_per_dev(seg)) * lv->vg->extent_size;
        /* seg->area_len does not change */
 
        if (old_image_count < new_image_count) {
@@ -1861,7 +1861,7 @@ static int _raid_reshape_remove_images(struct logical_volume *lv,
 
                reduced_le_count -= seg->reshape_len * _data_rimages_count(seg, new_image_count);
                current_le_count = lv->le_count - seg->reshape_len * _data_rimages_count(seg, old_image_count);
-               extend_le_count = current_le_count * current_le_count / reduced_le_count;
+               extend_le_count = (uint32_t)((uint64_t) current_le_count * current_le_count / reduced_le_count);
                log_warn("WARNING: Removing stripes from active%s logical "
                         "volume %s will shrink it from %s to %s!",
                         info.open_count ? " and open" : "", display_lvname(lv),
index fcb9e336786d1ffecaa52f4c4d47e1b6a51ecff9..1421b31fa48a92d6ded75dda1717319827968b68 100644 (file)
@@ -2582,7 +2582,7 @@ static int _segdata_offset(struct dm_report *rh, struct dm_pool *mem,
 
                if (lv_raid_data_offset(lv, &data_offset)) {
                        if (new_data_offset && !lv_raid_image_in_sync(seg->lv))
-                               data_offset = data_offset ? 0 : seg->reshape_len * lv->vg->extent_size;
+                               data_offset = data_offset ? 0 : (uint64_t) seg->reshape_len * lv->vg->extent_size;
 
                        return dm_report_field_uint64(rh, field, &data_offset);
                }
This page took 0.047177 seconds and 5 git commands to generate.