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 <aju...@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
_______________________________________________
Devel mailing list -- devel@lists.libvirt.org
To unsubscribe send an email to devel-le...@lists.libvirt.org

Reply via email to