Trying to print pages of a size larger than the UINT_MAX of the
given platform (for example, around 4G on 64-bit intel), a system
error was printed, but this is a legitimate request, fixed.
vshCommandOptScaledInt requiers set maximum returning size for
the variable '&bytes'. It was set as UINT_MAX, while the public
API variable 'kibibytes', which loads the 'bytes' lately, is type
of UINT. Since it's kibibytes, the value in bytes should be 1024*
bigger and it still will works correctly. So the correct max size
of bytes is UINT_MAX * 1024.
Resolves:
https://issues.redhat.com/browse/RHEL-23608
Signed-off-by: Adam Julis <ajulis(a)redhat.com>
---
tools/virsh-host.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tools/virsh-host.c b/tools/virsh-host.c
index 6c14be865f..5a934d7a7f 100644
--- a/tools/virsh-host.c
+++ b/tools/virsh-host.c
@@ -335,7 +335,7 @@ cmdFreepages(vshControl *ctl, const vshCmd *cmd)
VSH_EXCLUSIVE_OPTIONS_VAR(all, cellno);
- if (vshCommandOptScaledInt(ctl, cmd, "pagesize", &bytes, 1024,
UINT_MAX) < 0)
+ if (vshCommandOptScaledInt(ctl, cmd, "pagesize", &bytes, 1024, UINT_MAX
* 1024ULL) < 0)
goto cleanup;
kibibytes = VIR_DIV_UP(bytes, 1024);
--
2.43.2