From: Brandon Syu <brandon....@amd.com>

[ Upstream commit 9190d4a263264eabf715f5fc1827da45e3fdc247 ]

[Why]
There is an issue mapping non-allocated location of memory.
It would allocate gpio registers from an array out of bounds.

[How]
Patch correct numbers of bounds for using.

Tested-by: Daniel Wheeler <daniel.whee...@amd.com>
Reviewed-by: Martin Leung <martin.le...@amd.com>
Acked-by: Rodrigo Siqueira <rodrigo.sique...@amd.com>
Signed-off-by: Brandon Syu <brandon....@amd.com>
Signed-off-by: Alex Deucher <alexander.deuc...@amd.com>
Signed-off-by: Sasha Levin <sas...@kernel.org>
---
 .../gpu/drm/amd/display/dc/gpio/dcn20/hw_factory_dcn20.c   | 6 ++++--
 .../gpu/drm/amd/display/dc/gpio/dcn30/hw_factory_dcn30.c   | 6 ++++--
 .../gpu/drm/amd/display/dc/gpio/dcn32/hw_factory_dcn32.c   | 6 ++++--
 drivers/gpu/drm/amd/display/dc/gpio/ddc_regs.h             | 7 +++++++
 4 files changed, 19 insertions(+), 6 deletions(-)

diff --git a/drivers/gpu/drm/amd/display/dc/gpio/dcn20/hw_factory_dcn20.c 
b/drivers/gpu/drm/amd/display/dc/gpio/dcn20/hw_factory_dcn20.c
index 9b63c6c0cc844..e0bd0c722e006 100644
--- a/drivers/gpu/drm/amd/display/dc/gpio/dcn20/hw_factory_dcn20.c
+++ b/drivers/gpu/drm/amd/display/dc/gpio/dcn20/hw_factory_dcn20.c
@@ -138,7 +138,8 @@ static const struct ddc_sh_mask ddc_shift[] = {
        DDC_MASK_SH_LIST_DCN2(__SHIFT, 3),
        DDC_MASK_SH_LIST_DCN2(__SHIFT, 4),
        DDC_MASK_SH_LIST_DCN2(__SHIFT, 5),
-       DDC_MASK_SH_LIST_DCN2(__SHIFT, 6)
+       DDC_MASK_SH_LIST_DCN2(__SHIFT, 6),
+       DDC_MASK_SH_LIST_DCN2_VGA(__SHIFT)
 };
 
 static const struct ddc_sh_mask ddc_mask[] = {
@@ -147,7 +148,8 @@ static const struct ddc_sh_mask ddc_mask[] = {
        DDC_MASK_SH_LIST_DCN2(_MASK, 3),
        DDC_MASK_SH_LIST_DCN2(_MASK, 4),
        DDC_MASK_SH_LIST_DCN2(_MASK, 5),
-       DDC_MASK_SH_LIST_DCN2(_MASK, 6)
+       DDC_MASK_SH_LIST_DCN2(_MASK, 6),
+       DDC_MASK_SH_LIST_DCN2_VGA(_MASK)
 };
 
 #include "../generic_regs.h"
diff --git a/drivers/gpu/drm/amd/display/dc/gpio/dcn30/hw_factory_dcn30.c 
b/drivers/gpu/drm/amd/display/dc/gpio/dcn30/hw_factory_dcn30.c
index 687d4f128480e..36a5736c58c92 100644
--- a/drivers/gpu/drm/amd/display/dc/gpio/dcn30/hw_factory_dcn30.c
+++ b/drivers/gpu/drm/amd/display/dc/gpio/dcn30/hw_factory_dcn30.c
@@ -145,7 +145,8 @@ static const struct ddc_sh_mask ddc_shift[] = {
        DDC_MASK_SH_LIST_DCN2(__SHIFT, 3),
        DDC_MASK_SH_LIST_DCN2(__SHIFT, 4),
        DDC_MASK_SH_LIST_DCN2(__SHIFT, 5),
-       DDC_MASK_SH_LIST_DCN2(__SHIFT, 6)
+       DDC_MASK_SH_LIST_DCN2(__SHIFT, 6),
+       DDC_MASK_SH_LIST_DCN2_VGA(__SHIFT)
 };
 
 static const struct ddc_sh_mask ddc_mask[] = {
@@ -154,7 +155,8 @@ static const struct ddc_sh_mask ddc_mask[] = {
        DDC_MASK_SH_LIST_DCN2(_MASK, 3),
        DDC_MASK_SH_LIST_DCN2(_MASK, 4),
        DDC_MASK_SH_LIST_DCN2(_MASK, 5),
-       DDC_MASK_SH_LIST_DCN2(_MASK, 6)
+       DDC_MASK_SH_LIST_DCN2(_MASK, 6),
+       DDC_MASK_SH_LIST_DCN2_VGA(_MASK)
 };
 
 #include "../generic_regs.h"
diff --git a/drivers/gpu/drm/amd/display/dc/gpio/dcn32/hw_factory_dcn32.c 
b/drivers/gpu/drm/amd/display/dc/gpio/dcn32/hw_factory_dcn32.c
index 0ea52ba5ac827..9f6872ae40203 100644
--- a/drivers/gpu/drm/amd/display/dc/gpio/dcn32/hw_factory_dcn32.c
+++ b/drivers/gpu/drm/amd/display/dc/gpio/dcn32/hw_factory_dcn32.c
@@ -149,7 +149,8 @@ static const struct ddc_sh_mask ddc_shift[] = {
        DDC_MASK_SH_LIST_DCN2(__SHIFT, 3),
        DDC_MASK_SH_LIST_DCN2(__SHIFT, 4),
        DDC_MASK_SH_LIST_DCN2(__SHIFT, 5),
-       DDC_MASK_SH_LIST_DCN2(__SHIFT, 6)
+       DDC_MASK_SH_LIST_DCN2(__SHIFT, 6),
+       DDC_MASK_SH_LIST_DCN2_VGA(__SHIFT)
 };
 
 static const struct ddc_sh_mask ddc_mask[] = {
@@ -158,7 +159,8 @@ static const struct ddc_sh_mask ddc_mask[] = {
        DDC_MASK_SH_LIST_DCN2(_MASK, 3),
        DDC_MASK_SH_LIST_DCN2(_MASK, 4),
        DDC_MASK_SH_LIST_DCN2(_MASK, 5),
-       DDC_MASK_SH_LIST_DCN2(_MASK, 6)
+       DDC_MASK_SH_LIST_DCN2(_MASK, 6),
+       DDC_MASK_SH_LIST_DCN2_VGA(_MASK)
 };
 
 #include "../generic_regs.h"
diff --git a/drivers/gpu/drm/amd/display/dc/gpio/ddc_regs.h 
b/drivers/gpu/drm/amd/display/dc/gpio/ddc_regs.h
index 308a543178a56..59884ef651b39 100644
--- a/drivers/gpu/drm/amd/display/dc/gpio/ddc_regs.h
+++ b/drivers/gpu/drm/amd/display/dc/gpio/ddc_regs.h
@@ -113,6 +113,13 @@
        (PHY_AUX_CNTL__AUX## cd ##_PAD_RXSEL## mask_sh),\
        (DC_GPIO_AUX_CTRL_5__DDC_PAD## cd ##_I2CMODE## mask_sh)}
 
+#define DDC_MASK_SH_LIST_DCN2_VGA(mask_sh) \
+       {DDC_MASK_SH_LIST_COMMON(mask_sh),\
+       0,\
+       0,\
+       0,\
+       0}
+
 struct ddc_registers {
        struct gpio_registers gpio;
        uint32_t ddc_setup;
-- 
2.39.0

Reply via email to