@@ -18,6 +18,7 @@
#include <linux/ioport.h>
#include <linux/kstrtox.h>
#include <linux/module.h>
+#include <linux/nospec.h>
#include <linux/platform_device.h>
#include <linux/sysfs.h>
#include <linux/uuid.h>
@@ -278,6 +279,8 @@ static int init_acpi(struct device *dev)
if (sock_ind >= hsmp_pdev.num_sockets)
return -EINVAL;
+ sock_ind = array_index_nospec(sock_ind, hsmp_pdev.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 <linux/device.h>
#include <linux/module.h>
#include <linux/pci.h>
+#include <linux/nospec.h>
#include <linux/platform_device.h>
#include <linux/sysfs.h>
@@ -78,6 +79,8 @@ static ssize_t hsmp_metric_tbl_read(struct file *filp, struct kobject *kobj,
if (sock_ind >= hsmp_pdev.num_sockets)
return -EINVAL;
+ sock_ind = array_index_nospec(sock_ind, hsmp_pdev.num_sockets);
+
sock = &hsmp_pdev.sock[sock_ind];
if (!sock)
return -EINVAL;