]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
drm/amd/pm: check negtive return for table entries
authorJesse Zhang <jesse.zhang@amd.com>
Mon, 13 May 2024 08:01:23 +0000 (16:01 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 12 Sep 2024 09:06:40 +0000 (11:06 +0200)
[ Upstream commit f76059fe14395b37ba8d997eb0381b1b9e80a939 ]

Function hwmgr->hwmgr_func->get_num_of_pp_table_entries(hwmgr) returns a negative number

Signed-off-by: Jesse Zhang <Jesse.Zhang@amd.com>
Suggested-by: Tim Huang <Tim.Huang@amd.com>
Reviewed-by: Tim Huang <Tim.Huang@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/gpu/drm/amd/pm/powerplay/hwmgr/pp_psm.c

index 31a32a79cfc20f7dfd8d1fb1ead3f7e626007d83..fe70ab4e65bb5e95d02eca606f702160fc737ae3 100644 (file)
@@ -30,9 +30,8 @@ int psm_init_power_state_table(struct pp_hwmgr *hwmgr)
 {
        int result;
        unsigned int i;
-       unsigned int table_entries;
        struct pp_power_state *state;
-       int size;
+       int size, table_entries;
 
        if (hwmgr->hwmgr_func->get_num_of_pp_table_entries == NULL)
                return 0;
@@ -40,15 +39,19 @@ int psm_init_power_state_table(struct pp_hwmgr *hwmgr)
        if (hwmgr->hwmgr_func->get_power_state_size == NULL)
                return 0;
 
-       hwmgr->num_ps = table_entries = hwmgr->hwmgr_func->get_num_of_pp_table_entries(hwmgr);
+       table_entries = hwmgr->hwmgr_func->get_num_of_pp_table_entries(hwmgr);
 
-       hwmgr->ps_size = size = hwmgr->hwmgr_func->get_power_state_size(hwmgr) +
+       size = hwmgr->hwmgr_func->get_power_state_size(hwmgr) +
                                          sizeof(struct pp_power_state);
 
-       if (table_entries == 0 || size == 0) {
+       if (table_entries <= 0 || size == 0) {
                pr_warn("Please check whether power state management is supported on this asic\n");
+               hwmgr->num_ps = 0;
+               hwmgr->ps_size = 0;
                return 0;
        }
+       hwmgr->num_ps = table_entries;
+       hwmgr->ps_size = size;
 
        hwmgr->ps = kcalloc(table_entries, size, GFP_KERNEL);
        if (hwmgr->ps == NULL)