From 231bbe2d5d736f0db0686a3262955154648f93ea Mon Sep 17 00:00:00 2001 From: Saravanan D Date: Wed, 11 Feb 2026 06:40:23 +0000 Subject: [PATCH] vmm: Enforce guest_numa_id on NUMA nodes The documentation says guest_numa_id is required to be unique and therefore the parser() giving default value for non-existing guest_numa_id with .unwrap_or(0) is dangerous. Return a validation error if guest_numa_id is not provided instead of silently defaulting to 0. Signed-off-by: Saravanan D --- vmm/src/config.rs | 6 +++++- vmm/src/vm_config.rs | 1 - 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/vmm/src/config.rs b/vmm/src/config.rs index ad8bf37a5..af9c4ce9a 100644 --- a/vmm/src/config.rs +++ b/vmm/src/config.rs @@ -2202,7 +2202,11 @@ impl NumaConfig { let guest_numa_id = parser .convert::("guest_numa_id") .map_err(Error::ParseNuma)? - .unwrap_or(0); + .ok_or_else(|| { + Error::ParseNuma(OptionParserError::InvalidValue( + "guest_numa_id is required for all NUMA nodes".to_string(), + )) + })?; let cpus = parser .convert::("cpus") .map_err(Error::ParseNuma)? diff --git a/vmm/src/vm_config.rs b/vmm/src/vm_config.rs index a71cca7be..954ab16fc 100644 --- a/vmm/src/vm_config.rs +++ b/vmm/src/vm_config.rs @@ -676,7 +676,6 @@ pub struct NumaDistance { #[derive(Clone, Debug, PartialEq, Eq, Deserialize, Serialize)] pub struct NumaConfig { - #[serde(default)] pub guest_numa_id: u32, #[serde(default)] pub cpus: Option>,