Hi Ilpo,
On 8/23/2024 7:24 PM, Ilpo Järvinen wrote:
Caution: This message originated from an External Source. Use proper caution when opening attachments, clicking links, or responding.
On Fri, 23 Aug 2024, Suma Hegde wrote:
Fix below warning caused by smatch by using array_index_nospec()
to clamp the index within the range.
"warn: potential spectre issue 'plat_dev.sock' [r] (local cap)"
While the warning have always been bogus for these code paths because
those are not user controllable values, I suspect the warning might no
longer trigger at all. I suspect the warning is tied to kstr*() which is
no longer used.
Also, it should be hsmp_pdev but please retest if this patch can be
dropped from this series (no need to resend the entire series because of
that, just mention if this patch can be left out).
I retested with smatch and warning is no more seen. Please drop this
patch. Thank you.
--
i.
Signed-off-by: Suma Hegde <suma.hegde@xxxxxxx>
Reviewed-by: Naveen Krishna Chatradhi <naveenkrishna.chatradhi@xxxxxxx>
---
Changes since v4:
None
Changes since v3:
None
Changes since v2:
None
Changes since v1:
Change plat_dev to hsmp_pdev
drivers/platform/x86/amd/hsmp/acpi.c | 3 +++
drivers/platform/x86/amd/hsmp/plat.c | 3 +++
2 files changed, 6 insertions(+)
diff --git a/drivers/platform/x86/amd/hsmp/acpi.c b/drivers/platform/x86/amd/hsmp/acpi.c
index f2bfc5981590..16a82b8bce28 100644
--- a/drivers/platform/x86/amd/hsmp/acpi.c
+++ b/drivers/platform/x86/amd/hsmp/acpi.c
@@ -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>
@@ -272,6 +273,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");
diff --git a/drivers/platform/x86/amd/hsmp/plat.c b/drivers/platform/x86/amd/hsmp/plat.c
index d55c984a9a5a..8fb395e91806 100644
--- a/drivers/platform/x86/amd/hsmp/plat.c
+++ b/drivers/platform/x86/amd/hsmp/plat.c
@@ -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>
@@ -79,6 +80,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;
Regards,
Suma Hegde