[PATCH 2/2] x86/setup: Use struct_size() for setup_data sizes
From: Thorsten Blum
Date: Tue Sep 15 2026 - 18:07:47 EST
Use struct_size(), which provides additional compile-time checks for
structures with flexible array members (e.g., __must_be_array()), to
calculate struct setup_data sizes.
Signed-off-by: Thorsten Blum <blum@xxxxxxxxxx>
---
arch/x86/kernel/setup.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c
index cda6adb9f69c..20facddee922 100644
--- a/arch/x86/kernel/setup.c
+++ b/arch/x86/kernel/setup.c
@@ -19,6 +19,7 @@
#include <linux/iscsi_ibft.h>
#include <linux/kexec_handover.h>
#include <linux/memblock.h>
+#include <linux/overflow.h>
#include <linux/panic_notifier.h>
#include <linux/pci.h>
#include <linux/random.h>
@@ -487,7 +488,7 @@ static void __init parse_setup_data(void)
u32 data_len, data_type;
data = early_memremap(pa_data, sizeof(*data));
- data_len = data->len + sizeof(struct setup_data);
+ data_len = struct_size(data, data, data->len);
data_type = data->type;
pa_next = data->next;
early_memunmap(data, sizeof(*data));
@@ -584,7 +585,7 @@ static void __init memblock_x86_reserve_range_setup_data(void)
len = sizeof(*data);
pa_next = data->next;
- memblock_reserve_kern(pa_data, sizeof(*data) + data->len);
+ memblock_reserve_kern(pa_data, struct_size(data, data, data->len));
if (data->type == SETUP_INDIRECT) {
len += data->len;