Re: [PATCH v5 5/5] x86/CPU/AMD: Print AGESA string from DMI additional information entry
From: Mario Limonciello
Date: Mon Mar 16 2026 - 22:33:14 EST
On 3/15/26 3:56 PM, Borislav Petkov wrote:
On Sun, Mar 15, 2026 at 10:14:48AM -0500, Mario Limonciello wrote:
FYI - you're replying to the v5 not the v6 [1].
Whoops, sorry about that.
It looks I've still used the right set tho:
v6_20260307_superm1_print_agesa_version_at_bootup.mbx
:)
I did add a check for info->count < 1, but that's not what you were actually
looking for. Do you have a suggestion for an upper limit to bound things?
I was thinking something like this:
#define DMI_LIMIT 10
int limit = info -> count > DMI_LIMIT ? DMI_LIMIT : info->count;
end = (void *)info + limit * info->header.length;
So that Zen5 laptop here says:
[ 0.853836] dmi_scan_additional: next: 0xffffc9000051950c, end: 0xffffc90000519515, hdr length: 14
[ 0.854364] entry 0: length: 9
[ 0.854576] AGESA: StrixPI-FP8 1.0.0.1d
So after that first loop pass we have
next = 0xffffc9000051950c + 9 = 0xffffc90000519515
And we should terminate. So I guess that's not a lot of entries.
In terms of limiting, I'd do something like:
/* A generous max size for the additional DMI entries */
#define MAX_DMI_ADDITIONAL_ENTRIES_LEN 256
if (info->header.length > MAX_DMI_ADDITIONAL_ENTRIES_LEN)
info->header.length = MAX_DMI_ADDITIONAL_ENTRIES_LEN;
And now you have a sane upper limit and we don't rely on any numbers the BIOS
is telling us.
Thx.
But that can't actually happen. info->header.length is u8.
So we're never going to end up with that many entries such that it would exhaust the check.