]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
media: pci: mgb4: fix potential spectre vulnerability
authorHans Verkuil <hverkuil-cisco@xs4all.nl>
Fri, 6 Oct 2023 10:08:50 +0000 (12:08 +0200)
committerHans Verkuil <hverkuil-cisco@xs4all.nl>
Fri, 13 Oct 2023 09:33:22 +0000 (11:33 +0200)
Fix smatch warnings:

drivers/media/pci/mgb4/mgb4_sysfs_out.c:118 video_source_store() warn: potential spectre issue 'mgbdev->vin' [r] (local cap)
drivers/media/pci/mgb4/mgb4_sysfs_out.c:122 video_source_store() warn: possible spectre second half.  'loopin_new'

Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Reviewed-by: Martin Tůma <martin.tuma@digiteqautomotive.com>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
drivers/media/pci/mgb4/mgb4_sysfs_out.c

index 23a9aabf3915da6e7730027bf45b5c73ba31bf4a..9f6e81c577267ec4dbabe4fc1cc319eda1dc632a 100644 (file)
@@ -8,6 +8,7 @@
  */
 
 #include <linux/device.h>
+#include <linux/nospec.h>
 #include "mgb4_core.h"
 #include "mgb4_i2c.h"
 #include "mgb4_vout.h"
@@ -114,8 +115,10 @@ static ssize_t video_source_store(struct device *dev,
 
        if (((config & 0xc) >> 2) < MGB4_VIN_DEVICES)
                loopin_old = mgbdev->vin[(config & 0xc) >> 2];
-       if (val < MGB4_VIN_DEVICES)
+       if (val < MGB4_VIN_DEVICES) {
+               val = array_index_nospec(val, MGB4_VIN_DEVICES);
                loopin_new = mgbdev->vin[val];
+       }
        if (loopin_old && loopin_cnt(loopin_old) == 1)
                mgb4_mask_reg(&mgbdev->video, loopin_old->config->regs.config,
                              0x2, 0x0);