[PATCH v3 1/5] kho: reject zero bootmem scale
From: Mike Rapoport (Microsoft)
Date: Thu Nov 12 2026 - 05:52:22 EST
kho_bootmem=0% sets bootmem_scale to 0, and then the bootmem areas are
sized using the explicit sizes that default to 0. KHO remains enabled,
but there is no usable bootmem to load the next kernel.
Reject zero scale the same way zero explicit sizes are rejected.
Fixes: 3dc92c311498 ("kexec: add Kexec HandOver (KHO) generation helpers")
Signed-off-by: Mike Rapoport (Microsoft) <rppt@xxxxxxxxxx>
---
kernel/liveupdate/kexec_handover.c | 14 ++++++++++----
1 file changed, 10 insertions(+), 4 deletions(-)
diff --git a/kernel/liveupdate/kexec_handover.c b/kernel/liveupdate/kexec_handover.c
index 6f1f55fe31819..b30ba686cb301 100644
--- a/kernel/liveupdate/kexec_handover.c
+++ b/kernel/liveupdate/kexec_handover.c
@@ -703,16 +703,22 @@ static int __init kho_parse_bootmem_size(char *p)
if (p[len - 1] == '%') {
/* unsigned int max is 4,294,967,295, 10 chars */
char s_scale[11] = {};
+ unsigned int scale;
int ret = 0;
if (len > ARRAY_SIZE(s_scale))
return -EINVAL;
memcpy(s_scale, p, len - 1);
- ret = kstrtouint(s_scale, 10, &bootmem_scale);
- if (!ret)
- pr_notice("bootmem scale is %d%%\n", bootmem_scale);
- return ret;
+ ret = kstrtouint(s_scale, 10, &scale);
+ if (ret)
+ return ret;
+ if (!scale)
+ return -EINVAL;
+
+ bootmem_scale = scale;
+ pr_notice("bootmem scale is %d%%\n", bootmem_scale);
+ return 0;
}
/* parse ll[KMG],mm[KMG],nn[KMG] */
--
2.53.0