From f833d29a3af7708b30b6076ed5c48c12481914ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Edwin=20T=C3=B6r=C3=B6k?= Date: Thu, 5 Feb 2026 13:56:45 +0000 Subject: [PATCH] tools/ocaml: fix 32-bit truncation bug in stub_xc_domain_setmaxmem() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Observed when attempting to boot a >4TiB VM: After a call to domain_setmaxmem with 6370254848 (KiB), the domain's maxmem got set to 2075287552, which is exactly 2^32 smaller. xc_domain_setmaxmem takes an uint64_t as a parameter, and the OCaml value is 64-bit already, so fix the C variable to match the type and avoid the truncation. Fixes: f5b43e95facd ("libxl: fix "xl mem-set" regression from 0c029c4da2") Signed-off-by: Edwin Török Acked-by: Christian Lindig Reviewed-by: Andrew Cooper (cherry picked from commit 381b4ff16f7ff83a2dc44f16b8dd0208f3255ec7) --- tools/ocaml/libs/xc/xenctrl_stubs.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/ocaml/libs/xc/xenctrl_stubs.c b/tools/ocaml/libs/xc/xenctrl_stubs.c index 863ab3c778..90353ec89d 100644 --- a/tools/ocaml/libs/xc/xenctrl_stubs.c +++ b/tools/ocaml/libs/xc/xenctrl_stubs.c @@ -934,7 +934,7 @@ CAMLprim value stub_xc_domain_setmaxmem(value xch_val, value domid, int retval; uint32_t c_domid = Int_val(domid); - unsigned int c_max_memkb = Int64_val(max_memkb); + uint64_t c_max_memkb = Int64_val(max_memkb); caml_enter_blocking_section(); retval = xc_domain_setmaxmem(xch, c_domid, c_max_memkb); caml_leave_blocking_section();