From e354c3392bb58985fb3af9b6e3701f28a6361af9 Mon Sep 17 00:00:00 2001 From: Laurentiu Palcu Date: Wed, 14 Nov 2018 14:43:13 +0200 Subject: [PATCH] MLK-20216-1: drm/imx/dcss: fix suspicious sign extension This addresses Coverity issues related to "Suspicious sign extension" when an u16 is promoted to int (32bit signed) and then to u64. If the resulting int is greater than 0x7fffffff the upper bits of the u64 will all be 1. Signed-off-by: Laurentiu Palcu --- drivers/gpu/imx/dcss/dcss-dpr.c | 2 +- drivers/gpu/imx/dcss/dcss-ss.c | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/imx/dcss/dcss-dpr.c b/drivers/gpu/imx/dcss/dcss-dpr.c index e8c551e09efb..c8fe118b9f6b 100644 --- a/drivers/gpu/imx/dcss/dcss-dpr.c +++ b/drivers/gpu/imx/dcss/dcss-dpr.c @@ -391,7 +391,7 @@ void dcss_dpr_addr_set(struct dcss_soc *dcss, int ch_num, u32 luma_base_addr, pitch = ch->pitch; ch->frame_ctrl &= ~PITCH_MASK; - ch->frame_ctrl |= ((pitch << PITCH_POS) & PITCH_MASK); + ch->frame_ctrl |= (((u32)pitch << PITCH_POS) & PITCH_MASK); } EXPORT_SYMBOL(dcss_dpr_addr_set); diff --git a/drivers/gpu/imx/dcss/dcss-ss.c b/drivers/gpu/imx/dcss/dcss-ss.c index 83086e779e21..bb9b2d827208 100644 --- a/drivers/gpu/imx/dcss/dcss-ss.c +++ b/drivers/gpu/imx/dcss/dcss-ss.c @@ -195,19 +195,20 @@ void dcss_ss_sync_set(struct dcss_soc *dcss, struct videomode *vm, hsync_end = vm->hsync_len - 1; dcss_ss_write(ss, (phsync ? SYNC_POL : 0) | - (hsync_end << SYNC_END_POS) | hsync_start, + ((u32)hsync_end << SYNC_END_POS) | hsync_start, DCSS_SS_HSYNC); vsync_start = vm->vfront_porch - 1; vsync_end = vm->vfront_porch + vm->vsync_len - 1; dcss_ss_write(ss, (pvsync ? SYNC_POL : 0) | - (vsync_end << SYNC_END_POS) | vsync_start, DCSS_SS_VSYNC); + ((u32)vsync_end << SYNC_END_POS) | vsync_start, + DCSS_SS_VSYNC); de_ulc_x = vm->hsync_len + vm->hback_porch - 1; de_ulc_y = vm->vsync_len + vm->vfront_porch + vm->vback_porch; - dcss_ss_write(ss, SYNC_POL | (de_ulc_y << ULC_Y_POS) | de_ulc_x, + dcss_ss_write(ss, SYNC_POL | ((u32)de_ulc_y << ULC_Y_POS) | de_ulc_x, DCSS_SS_DE_ULC); de_lrc_x = vm->hsync_len + vm->hback_porch + vm->hactive - 1; -- 2.17.1