[AMD Official Use Only - AMD Internal Distribution Only]
>> memset(sort_feature, -1, sizeof(sort_feature));
...
>> if (sort_feature[feature_index] < 0)
continue;
When the array type is changed from int8_t to int16_t, the code logic of this
memset() may not correctly initialize all elements to '-1'.
Please modify this code together to ensure that the subsequent code logic meets
expectations.
Best Regards,
Kevin
-----Original Message-----
From: Lazar, Lijo <[email protected]>
Sent: Monday, March 2, 2026 2:23 PM
To: Kamal, Asad <[email protected]>; [email protected]
Cc: Zhang, Hawking <[email protected]>; Ma, Le <[email protected]>; Zhang,
Morris <[email protected]>; Deucher, Alexander <[email protected]>;
Wang, Yang(Kevin) <[email protected]>
Subject: Re: [PATCH] drm/amd/pm: Avoid overflow when sorting pp_feature list
On 02-Mar-26 11:42 AM, Asad Kamal wrote:
> pp_features sorting uses int8_t sort_feature[] to store driver feature
> enum indices. On newer ASICs the enum index can exceed 127, causing
> signed overflow and silently dropping entries from the output.
> Switch the array to int16_t so all enum indices are preserved.
>
> Signed-off-by: Asad Kamal <[email protected]>
Reviewed-by: Lijo Lazar <[email protected]>
Thanks,
Lijo
> ---
> drivers/gpu/drm/amd/pm/swsmu/smu_cmn.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/amd/pm/swsmu/smu_cmn.c
> b/drivers/gpu/drm/amd/pm/swsmu/smu_cmn.c
> index c471c0e2cbd1..326c86b920a2 100644
> --- a/drivers/gpu/drm/amd/pm/swsmu/smu_cmn.c
> +++ b/drivers/gpu/drm/amd/pm/swsmu/smu_cmn.c
> @@ -880,7 +880,7 @@ static const char *smu_get_feature_name(struct
> smu_context *smu,
> size_t smu_cmn_get_pp_feature_mask(struct smu_context *smu,
> char *buf)
> {
> - int8_t sort_feature[MAX(SMU_FEATURE_COUNT, SMU_FEATURE_MAX)];
> + int16_t sort_feature[MAX(SMU_FEATURE_COUNT, SMU_FEATURE_MAX)];
> struct smu_feature_bits feature_mask;
> uint32_t features[2];
> int i, feature_index;