| From ac30ad95bd999206b10aab306abee1a3099c0104 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Fri, 24 Mar 2023 06:38:32 -0700 |
| Subject: media: dib7000p: Fix potential division by zero |
| |
| From: Daniil Dulov <d.dulov@aladdin.ru> |
| |
| [ Upstream commit a1db7b2c5533fc67e2681eb5efc921a67bc7d5b8 ] |
| |
| Variable loopdiv can be assigned 0, then it is used as a denominator, |
| without checking it for 0. |
| |
| Found by Linux Verification Center (linuxtesting.org) with SVACE. |
| |
| Fixes: 713d54a8bd81 ("[media] DiB7090: add support for the dib7090 based") |
| Signed-off-by: Daniil Dulov <d.dulov@aladdin.ru> |
| Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl> |
| [hverkuil: (bw != NULL) -> bw] |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/media/dvb-frontends/dib7000p.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| diff --git a/drivers/media/dvb-frontends/dib7000p.c b/drivers/media/dvb-frontends/dib7000p.c |
| index 0fbaabe43682c..d5c1859eba3c5 100644 |
| --- a/drivers/media/dvb-frontends/dib7000p.c |
| +++ b/drivers/media/dvb-frontends/dib7000p.c |
| @@ -500,7 +500,7 @@ static int dib7000p_update_pll(struct dvb_frontend *fe, struct dibx000_bandwidth |
| prediv = reg_1856 & 0x3f; |
| loopdiv = (reg_1856 >> 6) & 0x3f; |
| |
| - if ((bw != NULL) && (bw->pll_prediv != prediv || bw->pll_ratio != loopdiv)) { |
| + if (loopdiv && bw && (bw->pll_prediv != prediv || bw->pll_ratio != loopdiv)) { |
| dprintk("Updating pll (prediv: old = %d new = %d ; loopdiv : old = %d new = %d)\n", prediv, bw->pll_prediv, loopdiv, bw->pll_ratio); |
| reg_1856 &= 0xf000; |
| reg_1857 = dib7000p_read_word(state, 1857); |
| -- |
| 2.40.1 |
| |