Fields hdisplay and vdisplay are defined as u16 and their multiplication causes implicit promotion to signed 32-bit value, which may overflow and cause undefined behavior.
Prevent possible undefined behavior by explicitly casting one of the operands to (unsigned int) type. Fixes: cc4312127108 ("drm/tinydrm/mipi-dbi: Add mipi_dbi_init_with_formats()") Cc: Noralf Trønnes <nor...@tronnes.org> Cc: <sta...@vger.kernel.org> # v5.4+ Signed-off-by: Krzysztof Karas <krzysztof.ka...@intel.com> --- drivers/gpu/drm/drm_mipi_dbi.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/gpu/drm/drm_mipi_dbi.c b/drivers/gpu/drm/drm_mipi_dbi.c index e33c78fc8fbd..536741dd7690 100644 --- a/drivers/gpu/drm/drm_mipi_dbi.c +++ b/drivers/gpu/drm/drm_mipi_dbi.c @@ -691,7 +691,7 @@ int mipi_dbi_dev_init(struct mipi_dbi_dev *dbidev, const struct drm_simple_display_pipe_funcs *funcs, const struct drm_display_mode *mode, unsigned int rotation) { - size_t bufsize = mode->vdisplay * mode->hdisplay * sizeof(u16); + size_t bufsize = (unsigned int)mode->vdisplay * mode->hdisplay * sizeof(u16); dbidev->drm.mode_config.preferred_depth = 16; -- 2.34.1 -- Best Regards, Krzysztof