platform/x86/amd/hsmp: Check num_sockets against MAX_AMD_SOCKETS
authorSuma Hegde <suma.hegde@amd.com>
Sat, 6 Jan 2024 02:25:30 +0000 (02:25 +0000)
committerIlpo Järvinen <ilpo.jarvinen@linux.intel.com>
Wed, 31 Jan 2024 08:31:07 +0000 (10:31 +0200)
AMD supports connecting up to 8 AMD EPYCs in a system.
Hence, verify the num_sockets returned from amd_nb_num().
Also remove the WARN_ON() since the num_sockets is already verified.

Signed-off-by: Suma Hegde <suma.hegde@amd.com>
Reviewed-by: Naveen Krishna Chatradhi <nchatrad@amd.com>
Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Link: https://lore.kernel.org/r/20240106022532.1746932-9-suma.hegde@amd.com
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
drivers/platform/x86/amd/hsmp.c

index aecc64a72d20acc1a4b6af8882a9002ebe5b518c..1b446d36221fd8b6c078287f7c56fb7c45f310c9 100644 (file)
@@ -62,6 +62,8 @@
 #define MSG_ARGOFF_STR         "MsgArgOffset"
 #define MSG_RESPOFF_STR                "MsgRspOffset"
 
+#define MAX_AMD_SOCKETS 8
+
 struct hsmp_mbaddr_info {
        u32 base_addr;
        u32 msg_id_off;
@@ -669,10 +671,6 @@ static int hsmp_create_non_acpi_sysfs_if(struct device *dev)
        struct attribute_group *attr_grp;
        u16 i;
 
-       /* String formatting is currently limited to u8 sockets */
-       if (WARN_ON(plat_dev.num_sockets > U8_MAX))
-               return -ERANGE;
-
        hsmp_attr_grps = devm_kzalloc(dev, sizeof(struct attribute_group *) *
                                      (plat_dev.num_sockets + 1), GFP_KERNEL);
        if (!hsmp_attr_grps)
@@ -922,7 +920,7 @@ static int __init hsmp_plt_init(void)
         * if we have N SMN/DF interfaces that ideally means N sockets
         */
        plat_dev.num_sockets = amd_nb_num();
-       if (plat_dev.num_sockets == 0)
+       if (plat_dev.num_sockets == 0 || plat_dev.num_sockets > MAX_AMD_SOCKETS)
                return ret;
 
        ret = platform_driver_register(&amd_hsmp_driver);