Skip to content

Commit 3c89c72

Browse files
arndbgregkh
authored andcommitted
drm/imx: imx-ldb: fix out of bounds array access warning
[ Upstream commit 33ce7f2 ] When CONFIG_OF is disabled, building with 'make W=1' produces warnings about out of bounds array access: drivers/gpu/drm/imx/imx-ldb.c: In function 'imx_ldb_set_clock.constprop': drivers/gpu/drm/imx/imx-ldb.c:186:8: error: array subscript -22 is below array bounds of 'struct clk *[4]' [-Werror=array-bounds] Add an error check before the index is used, which helps with the warning, as well as any possible other error condition that may be triggered at runtime. The warning could be fixed by adding a Kconfig depedency on CONFIG_OF, but Liu Ying points out that the driver may hit the out-of-bounds problem at runtime anyway. Signed-off-by: Arnd Bergmann <arnd@arndb.de> Reviewed-by: Liu Ying <victor.liu@nxp.com> Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de> Signed-off-by: Sasha Levin <sashal@kernel.org>
1 parent e1ff1c6 commit 3c89c72

1 file changed

Lines changed: 10 additions & 0 deletions

File tree

drivers/gpu/drm/imx/imx-ldb.c

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -197,6 +197,11 @@ static void imx_ldb_encoder_enable(struct drm_encoder *encoder)
197197
int dual = ldb->ldb_ctrl & LDB_SPLIT_MODE_EN;
198198
int mux = drm_of_encoder_active_port_id(imx_ldb_ch->child, encoder);
199199

200+
if (mux < 0 || mux >= ARRAY_SIZE(ldb->clk_sel)) {
201+
dev_warn(ldb->dev, "%s: invalid mux %d\n", __func__, mux);
202+
return;
203+
}
204+
200205
drm_panel_prepare(imx_ldb_ch->panel);
201206

202207
if (dual) {
@@ -255,6 +260,11 @@ imx_ldb_encoder_atomic_mode_set(struct drm_encoder *encoder,
255260
int mux = drm_of_encoder_active_port_id(imx_ldb_ch->child, encoder);
256261
u32 bus_format = imx_ldb_ch->bus_format;
257262

263+
if (mux < 0 || mux >= ARRAY_SIZE(ldb->clk_sel)) {
264+
dev_warn(ldb->dev, "%s: invalid mux %d\n", __func__, mux);
265+
return;
266+
}
267+
258268
if (mode->clock > 170000) {
259269
dev_warn(ldb->dev,
260270
"%s: mode exceeds 170 MHz pixel clock\n", __func__);

0 commit comments

Comments
 (0)