[PATCH] media: dib7000p: Fix potential division by zero

Daniil Dulov posted 1 patch 2 years, 10 months ago
There is a newer version of this series
drivers/media/dvb-frontends/dib7000p.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
[PATCH] media: dib7000p: Fix potential division by zero
Posted by Daniil Dulov 2 years, 10 months ago
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>
---
 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 55bee50aa871..bea5717907e7 100644
--- a/drivers/media/dvb-frontends/dib7000p.c
+++ b/drivers/media/dvb-frontends/dib7000p.c
@@ -497,7 +497,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 != NULL) && (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.25.1
Re: [PATCH] media: dib7000p: Fix potential division by zero
Posted by Vladimir Oltean 2 years, 10 months ago
Hi Daniil,

On Fri, Mar 24, 2023 at 06:12:09AM -0700, Daniil Dulov wrote:
> 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>
> ---
>  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 55bee50aa871..bea5717907e7 100644
> --- a/drivers/media/dvb-frontends/dib7000p.c
> +++ b/drivers/media/dvb-frontends/dib7000p.c
> @@ -497,7 +497,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 != NULL) && (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.25.1
> 

Did you send this patch to the correct recipients and mailing lists?

$ ./scripts/get_maintainer.pl drivers/media/dvb-frontends/dib7000p.c
Mauro Carvalho Chehab <mchehab@kernel.org> (maintainer:MEDIA INPUT INFRASTRUCTURE (V4L/DVB))
linux-media@vger.kernel.org (open list:MEDIA INPUT INFRASTRUCTURE (V4L/DVB))
linux-kernel@vger.kernel.org (open list)
RE: [PATCH] media: dib7000p: Fix potential division by zero
Posted by Daniil Dulov 2 years, 10 months ago
Hello Vladimir,
Sorry, I used a script with a wrong module, my fault.

-----Original Message-----
From: Vladimir Oltean [mailto:olteanv@gmail.com] 
Sent: Friday, March 24, 2023 4:15 PM
To: Daniil Dulov <D.Dulov@aladdin.ru>
Cc: Andrew Lunn <andrew@lunn.ch>; Vivien Didelot <vivien.didelot@gmail.com>; Florian Fainelli <f.fainelli@gmail.com>; David S. Miller <davem@davemloft.net>; Jakub Kicinski <kuba@kernel.org>; Kurt Kanzenbach <kurt@linutronix.de>; netdev@vger.kernel.org; linux-kernel@vger.kernel.org; lvc-patches@linuxtesting.org
Subject: Re: [PATCH] media: dib7000p: Fix potential division by zero

Hi Daniil,

On Fri, Mar 24, 2023 at 06:12:09AM -0700, Daniil Dulov wrote:
> 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>
> ---
>  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 55bee50aa871..bea5717907e7 100644
> --- a/drivers/media/dvb-frontends/dib7000p.c
> +++ b/drivers/media/dvb-frontends/dib7000p.c
> @@ -497,7 +497,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 != NULL) && (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.25.1
> 

Did you send this patch to the correct recipients and mailing lists?

$ ./scripts/get_maintainer.pl drivers/media/dvb-frontends/dib7000p.c
Mauro Carvalho Chehab <mchehab@kernel.org> (maintainer:MEDIA INPUT INFRASTRUCTURE (V4L/DVB))
linux-media@vger.kernel.org (open list:MEDIA INPUT INFRASTRUCTURE (V4L/DVB))
linux-kernel@vger.kernel.org (open list)
Re: [PATCH] media: dib7000p: Fix potential division by zero
Posted by Jakub Kicinski 2 years, 10 months ago
On Fri, 24 Mar 2023 13:26:13 +0000 Daniil Dulov wrote:
> Sorry, I used a script with a wrong module, my fault.

Always run the script on the patch itself, not on a file path.