Message ID | 20240823075543.884265-11-suma.hegde@amd.com (mailing list archive) |
---|---|
State | Rejected, archived |
Headers | show |
Series | [v5,01/11] platform/x86/amd/hsmp: Create hsmp/ directory | expand |
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).
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@amd.com> >> Reviewed-by: Naveen Krishna Chatradhi <naveenkrishna.chatradhi@amd.com> >> --- >> 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
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;