summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLijo Lazar <lijo.lazar@amd.com>2026-06-18 10:56:54 +0530
committerAlex Deucher <alexander.deucher@amd.com>2026-07-01 11:11:20 -0400
commitbf939f2a1687ef4ab815640096357f8ef5bd5fb6 (patch)
treeef64bb9a824468ae3276339c496630f738489975
parent7445035dd3f22fc4c151058304b2dc6df4aca59b (diff)
downloadlinux-stable-bf939f2a1687ef4ab815640096357f8ef5bd5fb6.tar.gz
linux-stable-bf939f2a1687ef4ab815640096357f8ef5bd5fb6.zip
drm/amd/pm: validate vega10 profile mode inputs
Check for out of range profile modes and custom params that exceed 8 bits. Signed-off-by: Lijo Lazar <lijo.lazar@amd.com> Reviewed-by: Asad Kamal <asad.kamal@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
-rw-r--r--drivers/gpu/drm/amd/pm/powerplay/hwmgr/vega10_hwmgr.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/drivers/gpu/drm/amd/pm/powerplay/hwmgr/vega10_hwmgr.c b/drivers/gpu/drm/amd/pm/powerplay/hwmgr/vega10_hwmgr.c
index a5896ce59097..629815f0c5d4 100644
--- a/drivers/gpu/drm/amd/pm/powerplay/hwmgr/vega10_hwmgr.c
+++ b/drivers/gpu/drm/amd/pm/powerplay/hwmgr/vega10_hwmgr.c
@@ -5215,6 +5215,11 @@ static int vega10_set_power_profile_mode(struct pp_hwmgr *hwmgr, long *input, ui
uint8_t min_active_level;
uint32_t power_profile_mode = input[size];
+ if (power_profile_mode > PP_SMC_POWER_PROFILE_CUSTOM) {
+ pr_err("Invalid power profile mode %u\n", power_profile_mode);
+ return -EINVAL;
+ }
+
if (power_profile_mode == PP_SMC_POWER_PROFILE_CUSTOM) {
if (size != 0 && size != 4)
return -EINVAL;
@@ -5230,6 +5235,10 @@ static int vega10_set_power_profile_mode(struct pp_hwmgr *hwmgr, long *input, ui
return -EINVAL;
}
+ if ((input[0] & ~0xFF) || (input[1] & ~0xFF) ||
+ (input[2] & ~0xFF) || (input[3] & ~0xFF))
+ return -EINVAL;
+
data->custom_profile_mode[0] = busy_set_point = input[0];
data->custom_profile_mode[1] = FPS = input[1];
data->custom_profile_mode[2] = use_rlc_busy = input[2];