@@ -14,6 +14,7 @@
#include <linux/acpi.h>
#include <asm/amd_hsmp.h>
#include <asm/amd_nb.h>
+#include <linux/nospec.h>
#include <linux/platform_device.h>
#define DRIVER_NAME "amd_hsmp"
@@ -267,6 +268,8 @@ static int init_acpi(struct device *dev)
if (sock_ind >= plat_dev.num_sockets)
return -EINVAL;
+ sock_ind = array_index_nospec(sock_ind, plat_dev.num_sockets);
+
ret = hsmp_parse_acpi_table(dev, sock_ind);
if (ret) {
dev_err(dev, "Failed to parse ACPI table\n");
@@ -15,6 +15,7 @@
#include <asm/amd_nb.h>
#include <linux/module.h>
#include <linux/pci.h>
+#include <linux/nospec.h>
#include <linux/platform_device.h>
#define DRIVER_NAME "amd_hsmp"
@@ -75,6 +76,8 @@ static ssize_t hsmp_metric_tbl_read(struct file *filp, struct kobject *kobj,
if (sock_ind >= plat_dev.num_sockets)
return -EINVAL;
+ sock_ind = array_index_nospec(sock_ind, plat_dev.num_sockets);
+
sock = &plat_dev.sock[sock_ind];
if (!sock)
return -EINVAL;