drm/vc4: hdmi: Fix off by ones in vc4_hdmi_read/write()
authorDan Carpenter <dan.carpenter@oracle.com>
Thu, 10 Sep 2020 10:07:48 +0000 (13:07 +0300)
committerMaxime Ripard <maxime@cerno.tech>
Thu, 10 Sep 2020 10:15:52 +0000 (12:15 +0200)
The variant->registers[] has ->num_registers elements so the >
comparison needs to be changes to >= to prevent an out of bounds
access.

Fixes: 311e305fdb4e ("drm/vc4: hdmi: Implement a register layout abstraction")
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Maxime Ripard <maxime@cerno.tech>
Link: https://patchwork.freedesktop.org/patch/msgid/20200910100748.GA79916@mwanda
drivers/gpu/drm/vc4/vc4_hdmi_regs.h

index a5f1354..47364bd 100644 (file)
@@ -398,7 +398,7 @@ static inline u32 vc4_hdmi_read(struct vc4_hdmi *hdmi,
        const struct vc4_hdmi_variant *variant = hdmi->variant;
        void __iomem *base;
 
-       if (reg > variant->num_registers) {
+       if (reg >= variant->num_registers) {
                dev_warn(&hdmi->pdev->dev,
                         "Invalid register ID %u\n", reg);
                return 0;
@@ -424,7 +424,7 @@ static inline void vc4_hdmi_write(struct vc4_hdmi *hdmi,
        const struct vc4_hdmi_variant *variant = hdmi->variant;
        void __iomem *base;
 
-       if (reg > variant->num_registers) {
+       if (reg >= variant->num_registers) {
                dev_warn(&hdmi->pdev->dev,
                         "Invalid register ID %u\n", reg);
                return;