AMD General

Series is

Reviewed-by: Hawking Zhang <[email protected]>

Regards,
Hawking
-----Original Message-----
From: Lazar, Lijo <[email protected]>
Sent: Friday, May 29, 2026 5:38 PM
To: [email protected]
Cc: Zhang, Hawking <[email protected]>; Deucher, Alexander 
<[email protected]>; Kamal, Asad <[email protected]>; Wang, 
Yang(Kevin) <[email protected]>
Subject: [PATCH 1/2] drm/amd/pm: Use strscpy in profile mode parsing

Use strscpy to copy the buffer which makes it explicit that a valid NULL 
terminated string gets copied. Also, make it explicit that the source buffer 
can be copied safely to the temporary buffer by checking against its size.

Signed-off-by: Lijo Lazar <[email protected]>
---
 drivers/gpu/drm/amd/pm/amdgpu_pm.c | 14 +++++---------
 1 file changed, 5 insertions(+), 9 deletions(-)

diff --git a/drivers/gpu/drm/amd/pm/amdgpu_pm.c 
b/drivers/gpu/drm/amd/pm/amdgpu_pm.c
index 450ecb188aed..ebe0b320ca4f 100644
--- a/drivers/gpu/drm/amd/pm/amdgpu_pm.c
+++ b/drivers/gpu/drm/amd/pm/amdgpu_pm.c
@@ -1375,26 +1375,22 @@ static ssize_t amdgpu_set_pp_power_profile_mode(struct 
device *dev,
        long parameter[64];
        char *sub_str, buf_cpy[128];
        char *tmp_str;
-       uint32_t i = 0;
        char tmp[2];
        long int profile_mode = 0;
        const char delimiter[3] = {' ', '\n', '\0'};
-       size_t len;

-       tmp[0] = *(buf);
+       tmp[0] = *(buf++);
        tmp[1] = '\0';
        ret = kstrtol(tmp, 0, &profile_mode);
        if (ret)
                return -EINVAL;

        if (profile_mode == PP_SMC_POWER_PROFILE_CUSTOM) {
-               if (count < 2 || count > 127)
+               if (count < 2 || count > sizeof(buf_cpy))
                        return -EINVAL;
-               while (isspace(*++buf))
-                       i++;
-               len = count - 1 - i;
-               memcpy(buf_cpy, buf, len);
-               buf_cpy[len] = '\0';
+               while (isspace(*buf))
+                       buf++;
+               strscpy(buf_cpy, buf, sizeof(buf_cpy));
                tmp_str = buf_cpy;
                while ((sub_str = strsep(&tmp_str, delimiter)) != NULL) {
                        if (strlen(sub_str) == 0)
--
2.49.0

Reply via email to