2015-02-25 21:57:08

by Ameen

[permalink] [raw]
Subject: [PATCH 6/6] qlcnic_dcb.c : possible division by zero.

Whenever there is a division it is usually worthwhile to
add some belt'n'braces code to ensure that cnt != 0, otherwise
a machine signal can occur.

Signed-off-by : Ameen Ali <[email protected]>
---
drivers/net/ethernet/qlogic/qlcnic/qlcnic_dcb.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_dcb.c b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_dcb.c
index a72bcdd..c1d5e48 100644
--- a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_dcb.c
+++ b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_dcb.c
@@ -822,7 +822,7 @@ qlcnic_dcb_get_pg_tc_cfg_tx(struct net_device *netdev, int tc, u8 *prio,
if (temp->valid && (pg == temp->pgid))
cnt++;
}
-
+ if(cnt != 0)
tc_cfg->bwg_percent = (100 / cnt);
*bw_per = tc_cfg->bwg_percent;
}
--
2.1.0


2015-02-25 22:01:10

by David Miller

[permalink] [raw]
Subject: Re: [PATCH 6/6] qlcnic_dcb.c : possible division by zero.

From: Ameen Ali <[email protected]>
Date: Wed, 25 Feb 2015 23:56:43 +0200

> @@ -822,7 +822,7 @@ qlcnic_dcb_get_pg_tc_cfg_tx(struct net_device *netdev, int tc, u8 *prio,
> if (temp->valid && (pg == temp->pgid))
> cnt++;
> }
> -
> + if(cnt != 0)
> tc_cfg->bwg_percent = (100 / cnt);

This is not acceptable.

Your conditional expression is not spaced properly, there must be a space
between "if" and the openning parenthesis of the condition.

You also must properly re-indent the statement the new if() condition
is protecting.

2015-02-26 14:22:58

by Sergei Shtylyov

[permalink] [raw]
Subject: Re: [PATCH 6/6] qlcnic_dcb.c : possible division by zero.

Hello.

On 02/26/2015 12:56 AM, Ameen Ali wrote:

> Whenever there is a division it is usually worthwhile to
> add some belt'n'braces code to ensure that cnt != 0, otherwise
> a machine signal can occur.

> Signed-off-by : Ameen Ali <[email protected]>
> ---
> drivers/net/ethernet/qlogic/qlcnic/qlcnic_dcb.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)

> diff --git a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_dcb.c b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_dcb.c
> index a72bcdd..c1d5e48 100644
> --- a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_dcb.c
> +++ b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_dcb.c
> @@ -822,7 +822,7 @@ qlcnic_dcb_get_pg_tc_cfg_tx(struct net_device *netdev, int tc, u8 *prio,
> if (temp->valid && (pg == temp->pgid))
> cnt++;
> }
> -
> + if(cnt != 0)

Space needed after *if*. Please run your patches thru
scripts/checkpatch.pl before posting.

> tc_cfg->bwg_percent = (100 / cnt);

What happens to 'tc_cfg->bwg_percent' when cnt == 0?
You need to indent this line by an extra TAB, since it's a part of the
*if* statment now.

> *bw_per = tc_cfg->bwg_percent;
> }

WBR, Sergei