]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
drm/amd/pm: Use strscpy in profile mode parsing
authorLijo Lazar <lijo.lazar@amd.com>
Tue, 19 May 2026 13:00:03 +0000 (18:30 +0530)
committerAlex Deucher <alexander.deucher@amd.com>
Thu, 4 Jun 2026 19:27:55 +0000 (15:27 -0400)
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 <lijo.lazar@amd.com>
Reviewed-by: Hawking Zhang <Hawking.Zhang@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/pm/amdgpu_pm.c

index a21d1506e6ab5e19acd0a283773b184bcf36f5af..f43d09769320e4f7b945679ded83abb6b48055e5 100644 (file)
@@ -1393,7 +1393,6 @@ 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'};
@@ -1402,18 +1401,18 @@ static ssize_t amdgpu_set_pp_power_profile_mode(struct device *dev,
        if (count == 0 || sysfs_streq(buf, ""))
                return -EINVAL;
 
-       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++;
-               memcpy(buf_cpy, buf, count-i);
+               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)