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.

Signed-off-by: Lijo Lazar <lijo.la...@amd.com>
---
 drivers/gpu/drm/amd/amdgpu/atom.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/atom.c 
b/drivers/gpu/drm/amd/amdgpu/atom.c
index 1c994d0cc50b..7cc7aec1bff3 100644
--- a/drivers/gpu/drm/amd/amdgpu/atom.c
+++ b/drivers/gpu/drm/amd/amdgpu/atom.c
@@ -1498,7 +1498,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);
@@ -1511,8 +1511,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)
-- 
2.49.0

Reply via email to