Regression was introduced in commit 38e0c89a19fd ("drm/amdgpu: Fix NULL dereference in dpm sysfs handlers") which made the set_pp_od_clk_voltage and set_pp_power_profile_mode return -EINVAL for previously valid input. This was caused by an empty string (starting at the \0 character) being passed to the kstrtol. Signed-off-by: Paweł Gronowski <me@xxxxxxxxxx> --- drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c index ebb8a28ff002..cbf623ff03bd 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c @@ -778,12 +778,14 @@ static ssize_t amdgpu_set_pp_od_clk_voltage(struct device *dev, tmp_str++; while (isspace(*++tmp_str)); - while ((sub_str = strsep(&tmp_str, delimiter)) != NULL) { + while ((sub_str = strsep(&tmp_str, delimiter)) && *sub_str) { ret = kstrtol(sub_str, 0, ¶meter[parameter_size]); if (ret) return -EINVAL; parameter_size++; + if (!tmp_str) + break; while (isspace(*tmp_str)) tmp_str++; } @@ -1635,11 +1637,14 @@ static ssize_t amdgpu_set_pp_power_profile_mode(struct device *dev, i++; memcpy(buf_cpy, buf, count-i); tmp_str = buf_cpy; - while ((sub_str = strsep(&tmp_str, delimiter)) != NULL) { + while ((sub_str = strsep(&tmp_str, delimiter)) && *sub_str) { ret = kstrtol(sub_str, 0, ¶meter[parameter_size]); if (ret) return -EINVAL; parameter_size++; + + if (!tmp_str) + break; while (isspace(*tmp_str)) tmp_str++; } -- 2.25.1 _______________________________________________ amd-gfx mailing list amd-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/amd-gfx