Reviewed-by: Alex Deucher <[email protected]>

On Wed, Jul 26, 2023 at 10:51 AM Srinivasan Shanmugam
<[email protected]> 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 <[email protected]>
> Cc: Christian König <[email protected]>
> Cc: Alex Deucher <[email protected]>
> Signed-off-by: Srinivasan Shanmugam <[email protected]>
> ---
>  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
>

Reply via email to