[PATCH] drm/radeon: Prefer strscpy over strlcpy in 'radeon_combios_get_power_modes'

Alex Deucher alexdeucher at gmail.com
Wed Jul 26 18:28:44 UTC 2023


Reviewed-by: Alex Deucher <alexander.deucher at amd.com>

On Wed, Jul 26, 2023 at 10:51 AM Srinivasan Shanmugam
<srinivasan.shanmugam at amd.com> wrote:
>
> strlcpy() reads the entire source buffer first. This read may exceed the
> destination size limit. This is both inefficient and can lead to linear
> read overflows if a source string is not NUL-terminated. The safe
> replacement is strscpy() [1].
>
> cleanup to remove the strlcpy() function entirely from the kernel [2].
>
> [1] https://www.kernel.org/doc/html/latest/process/deprecated.html#strlcpy
> [2] https://github.com/KSPP/linux/issues/89
>
> Fixes the following:
>
> WARNING: Prefer strscpy over strlcpy
> +                               strlcpy(info.type, name, sizeof(info.type));
>
> WARNING: Prefer strscpy over strlcpy
> +                               strlcpy(info.type, name, sizeof(info.type));
>
> Cc: Guchun Chen <guchun.chen at amd.com>
> Cc: Christian König <christian.koenig at amd.com>
> Cc: Alex Deucher <alexander.deucher at amd.com>
> Signed-off-by: Srinivasan Shanmugam <srinivasan.shanmugam at amd.com>
> ---
>  drivers/gpu/drm/radeon/radeon_combios.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/radeon/radeon_combios.c b/drivers/gpu/drm/radeon/radeon_combios.c
> index 783a6b8802d5..795c3667f6d6 100644
> --- a/drivers/gpu/drm/radeon/radeon_combios.c
> +++ b/drivers/gpu/drm/radeon/radeon_combios.c
> @@ -2702,7 +2702,7 @@ void radeon_combios_get_power_modes(struct radeon_device *rdev)
>                                 struct i2c_board_info info = { };
>                                 const char *name = thermal_controller_names[thermal_controller];
>                                 info.addr = i2c_addr >> 1;
> -                               strlcpy(info.type, name, sizeof(info.type));
> +                               strscpy(info.type, name, sizeof(info.type));
>                                 i2c_new_client_device(&rdev->pm.i2c_bus->adapter, &info);
>                         }
>                 }
> @@ -2719,7 +2719,7 @@ void radeon_combios_get_power_modes(struct radeon_device *rdev)
>                                 struct i2c_board_info info = { };
>                                 const char *name = "f75375";
>                                 info.addr = 0x28;
> -                               strlcpy(info.type, name, sizeof(info.type));
> +                               strscpy(info.type, name, sizeof(info.type));
>                                 i2c_new_client_device(&rdev->pm.i2c_bus->adapter, &info);
>                                 DRM_INFO("Possible %s thermal controller at 0x%02x\n",
>                                          name, info.addr);
> --
> 2.25.1
>


More information about the amd-gfx mailing list