From: Liu Ying Date: Tue, 26 Mar 2019 06:20:34 +0000 (+0800) Subject: MLK-20208-3 mxc IPUv3: disp: Avoid division by zero in ipu_init_async_panel() X-Git-Tag: rel_imx_4.19.35_1.1.0~596 X-Git-Url: https://git.somdevices.com/?a=commitdiff_plain;h=db45f7f61ae0d048bb17d60ca20ecfd4b05b654a;p=linux.git MLK-20208-3 mxc IPUv3: disp: Avoid division by zero in ipu_init_async_panel() To avoid potential division by zero in ipu_init_async_panel(), let's check the di_clk rate prior to that. Detected by CoverityScan, CID#56264 ("Division or modulo by zero") Signed-off-by: Liu Ying (cherry picked from commit d7777247e6ba4ca9fcc313bef6672060859fed19) Signed-off-by: Arulpandiyan Vadivel Signed-off-by: Shrikant Bobade (cherry picked from commit 739a8482f07187566ec8777dbd2d4b79a1056c49) --- diff --git a/drivers/mxc/ipu3/ipu_disp.c b/drivers/mxc/ipu3/ipu_disp.c index c4e3fa051c47..0598c36dbd34 100644 --- a/drivers/mxc/ipu3/ipu_disp.c +++ b/drivers/mxc/ipu3/ipu_disp.c @@ -1611,6 +1611,11 @@ int ipu_init_async_panel(struct ipu_soc *ipu, int disp, int type, uint32_t cycle u32 div; u32 di_clk = clk_get_rate(ipu->ipu_clk); + if (di_clk == 0) { + dev_err(ipu->dev, "di clock rate should not be zero\n"); + return -EINVAL; + } + /* round up cycle_time, then calcalate the divider using scaled math */ cycle_time += (1000000000UL / di_clk) - 1; div = (cycle_time * (di_clk / 256UL)) / (1000000000UL / 256UL);