summaryrefslogtreecommitdiffstats
path: root/tools/lvresize.c
diff options
context:
space:
mode:
authorMilan Broz <mbroz@redhat.com>2011-09-15 15:26:40 +0000
committerMilan Broz <mbroz@redhat.com>2011-09-15 15:26:40 +0000
commitb18e1fd50efb2d743907582d3aa665d0702b899e (patch)
treef9bf3ea75c54413e34adbaf56ebaac8c3720da88 /tools/lvresize.c
parent89880365fc1f66934c3f9d5f95addfceba623aae (diff)
downloadlvm2-b18e1fd50efb2d743907582d3aa665d0702b899e.tar.gz
lvm2-b18e1fd50efb2d743907582d3aa665d0702b899e.tar.xz
lvm2-b18e1fd50efb2d743907582d3aa665d0702b899e.zip
Fix possible overflow of size if %FREE or %VG is used.
https://bugzilla.redhat.com/show_bug.cgi?id=737087
Diffstat (limited to 'tools/lvresize.c')
-rw-r--r--tools/lvresize.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/tools/lvresize.c b/tools/lvresize.c
index 7723fca2..4e4b1289 100644
--- a/tools/lvresize.c
+++ b/tools/lvresize.c
@@ -433,27 +433,27 @@ static int _lvresize(struct cmd_context *cmd, struct volume_group *vg,
switch(lp->percent) {
case PERCENT_VG:
- lp->extents = lp->extents * vg->extent_count / 100;
+ lp->extents = percent_of_extents(lp->extents, vg->extent_count);
break;
case PERCENT_FREE:
- lp->extents = lp->extents * vg->free_count / 100;
+ lp->extents = percent_of_extents(lp->extents, vg->free_count);
break;
case PERCENT_LV:
- lp->extents = lp->extents * lv->le_count / 100;
+ lp->extents = percent_of_extents(lp->extents, lv->le_count);
break;
case PERCENT_PVS:
if (lp->argc) {
pv_extent_count = pv_list_extents_free(pvh);
- lp->extents = lp->extents * pv_extent_count / 100;
+ lp->extents = percent_of_extents(lp->extents, pv_extent_count);
} else
- lp->extents = lp->extents * vg->extent_count / 100;
+ lp->extents = percent_of_extents(lp->extents, vg->extent_count);
break;
case PERCENT_ORIGIN:
if (!lv_is_cow(lv)) {
log_error("Specified LV does not have an origin LV.");
return EINVALID_CMD_LINE;
}
- lp->extents = lp->extents * origin_from_cow(lv)->le_count / 100;
+ lp->extents = percent_of_extents(lp->extents, origin_from_cow(lv)->le_count);
break;
case PERCENT_NONE:
break;