On Tue, Mar 24, 2020 at 7:49 AM Kent Russell <[email protected]> wrote: > > Ensure that when we memcpy, we don't end up copying more data than > the struct supports. For now, this is 16 characters for product number > and serial number, and 32 chars for product name > > Signed-off-by: Kent Russell <[email protected]>
Reviewed-by: Alex Deucher <[email protected]> > --- > .../gpu/drm/amd/amdgpu/amdgpu_fru_eeprom.c | 21 +++++++++++++++++++ > 1 file changed, 21 insertions(+) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_fru_eeprom.c > b/drivers/gpu/drm/amd/amdgpu/amdgpu_fru_eeprom.c > index 6f5e98fda181..bfe4259f9508 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_fru_eeprom.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_fru_eeprom.c > @@ -116,6 +116,13 @@ int amdgpu_fru_get_product_info(struct amdgpu_device > *adev) > return size; > } > > + /* Product name should only be 32 characters. Any more, > + * and something could be wrong. Cap it at 32 to be safe > + */ > + if (size > 32) { > + DRM_WARN("FRU Product Number is larger than 32 characters. > This is likely a mistake"); > + size = 32; > + } > /* Start at 2 due to buff using fields 0 and 1 for the address */ > memcpy(adev->product_name, &buff[2], size); > adev->product_name[size] = '\0'; > @@ -127,6 +134,13 @@ int amdgpu_fru_get_product_info(struct amdgpu_device > *adev) > return size; > } > > + /* Product number should only be 16 characters. Any more, > + * and something could be wrong. Cap it at 16 to be safe > + */ > + if (size > 16) { > + DRM_WARN("FRU Product Number is larger than 16 characters. > This is likely a mistake"); > + size = 16; > + } > memcpy(adev->product_number, &buff[2], size); > adev->product_number[size] = '\0'; > > @@ -146,6 +160,13 @@ int amdgpu_fru_get_product_info(struct amdgpu_device > *adev) > return size; > } > > + /* Serial number should only be 16 characters. Any more, > + * and something could be wrong. Cap it at 16 to be safe > + */ > + if (size > 16) { > + DRM_WARN("FRU Serial Number is larger than 16 characters. > This is likely a mistake"); > + size = 16; > + } > memcpy(adev->serial, &buff[2], size); > adev->serial[size] = '\0'; > > -- > 2.17.1 > > _______________________________________________ > amd-gfx mailing list > [email protected] > https://lists.freedesktop.org/mailman/listinfo/amd-gfx _______________________________________________ amd-gfx mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/amd-gfx
