mirror of
git://sourceware.org/git/lvm2.git
synced 2025-03-16 10:50:46 +03:00
validate region size against page size
This commit is contained in:
parent
61d8baf8b1
commit
20b71340bc
@ -102,6 +102,7 @@ static int _read_params(struct lvconvert_params *lp, struct cmd_context *cmd,
|
||||
int argc, char **argv)
|
||||
{
|
||||
int region_size;
|
||||
int pagesize = getpagesize();
|
||||
|
||||
memset(lp, 0, sizeof(*lp));
|
||||
|
||||
@ -188,13 +189,20 @@ static int _read_params(struct lvconvert_params *lp, struct cmd_context *cmd,
|
||||
lp->region_size = region_size;
|
||||
}
|
||||
|
||||
if (lp->region_size % (pagesize >> SECTOR_SHIFT)) {
|
||||
log_error("Region size (%" PRIu32 ") must be "
|
||||
"a multiple of machine memory "
|
||||
"page size (%d)",
|
||||
lp->region_size, pagesize >> SECTOR_SHIFT);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (lp->region_size & (lp->region_size - 1)) {
|
||||
log_error("Region size (%" PRIu32
|
||||
") must be a power of 2", lp->region_size);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
if (!lp->region_size) {
|
||||
log_error("Non-zero region size must be supplied.");
|
||||
return 0;
|
||||
|
@ -235,6 +235,7 @@ static int _read_mirror_params(struct lvcreate_params *lp,
|
||||
{
|
||||
int argc = *pargc;
|
||||
int region_size;
|
||||
int pagesize = getpagesize();
|
||||
|
||||
if (argc && (unsigned) argc < lp->mirrors) {
|
||||
log_error("Too few physical volumes on "
|
||||
@ -266,6 +267,13 @@ static int _read_mirror_params(struct lvcreate_params *lp,
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (lp->region_size % (pagesize >> SECTOR_SHIFT)) {
|
||||
log_error("Region size (%" PRIu32 ") must be a multiple of "
|
||||
"machine memory page size (%d)",
|
||||
lp->region_size, pagesize >> SECTOR_SHIFT);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (!lp->region_size) {
|
||||
log_error("Non-zero region size must be supplied.");
|
||||
return 0;
|
||||
|
Loading…
x
Reference in New Issue
Block a user