]> www.infradead.org Git - users/hch/misc.git/commitdiff
drm/amdgpu: Fix vbios build number parsing logic
authorLijo Lazar <lijo.lazar@amd.com>
Thu, 18 Sep 2025 12:22:04 +0000 (17:52 +0530)
committerAlex Deucher <alexander.deucher@amd.com>
Tue, 23 Sep 2025 14:21:09 +0000 (10:21 -0400)
It's not necessary that the build string and atom header section has a
difference of 32 bytes. Use the remaining bytes in the section as copy
limit.

Fixes: d6fa80266178 ("drm/amdgpu: Add vbios build number interface")
Signed-off-by: Lijo Lazar <lijo.lazar@amd.com>
Acked-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/atom.c

index be5d67c2c7a15892af4f12bc513a8ce8c8dd91cb..7a063e44d4298d8d666f8243114ffb2f50f049d6 100644 (file)
@@ -1502,7 +1502,7 @@ static void atom_get_vbios_build(struct atom_context *ctx)
 {
        unsigned char *atom_rom_hdr;
        unsigned char *str;
-       uint16_t base;
+       uint16_t base, len;
 
        base = CU16(ATOM_ROM_TABLE_PTR);
        atom_rom_hdr = CSTR(base);
@@ -1515,8 +1515,9 @@ static void atom_get_vbios_build(struct atom_context *ctx)
        while (str < atom_rom_hdr && *str++)
                ;
 
-       if ((str + STRLEN_NORMAL) < atom_rom_hdr)
-               strscpy(ctx->build_num, str, STRLEN_NORMAL);
+       len = min(atom_rom_hdr - str, STRLEN_NORMAL);
+       if (len)
+               strscpy(ctx->build_num, str, len);
 }
 
 struct atom_context *amdgpu_atom_parse(struct card_info *card, void *bios)