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.