2013-02-07 19:35:50

by Tim Gardner

[permalink] [raw]
Subject: [PATCH wireless-next] brcmsmac: fix u16 overflow warning

DOT11_MIN_BEACON_PERIOD and DOT11_MAX_BEACON_PERIOD are
superfluous. The only invalid beacon period is 0. Comparing
a 16 bit quantity to 0xffff also causes a compile warning:

drivers/net/wireless/brcm80211/brcmsmac/main.c:5560 brcms_c_set_beacon_period()
warn: impossible condition '(period > 65535) => (0-65535 > 65535)'

Observed from smatch analysis.

Cc: Brett Rudley <[email protected]>
Cc: Arend van Spriel <[email protected]>
Cc: "Franky (Zhenhui) Lin" <[email protected]>
Cc: Hante Meuleman <[email protected]>
Cc: "John W. Linville" <[email protected]>
Cc: Pieter-Paul Giesberts <[email protected]>
Cc: Seth Forshee <[email protected]>
Cc: Hauke Mehrtens <[email protected]>
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
Signed-off-by: Tim Gardner <[email protected]>
---
drivers/net/wireless/brcm80211/brcmsmac/main.c | 5 +----
1 file changed, 1 insertion(+), 4 deletions(-)

diff --git a/drivers/net/wireless/brcm80211/brcmsmac/main.c b/drivers/net/wireless/brcm80211/brcmsmac/main.c
index c26992a..080b54d 100644
--- a/drivers/net/wireless/brcm80211/brcmsmac/main.c
+++ b/drivers/net/wireless/brcm80211/brcmsmac/main.c
@@ -101,8 +101,6 @@
#define DOT11_RTS_LEN 16
#define DOT11_CTS_LEN 10
#define DOT11_BA_BITMAP_LEN 128
-#define DOT11_MIN_BEACON_PERIOD 1
-#define DOT11_MAX_BEACON_PERIOD 0xFFFF
#define DOT11_MAXNUMFRAGS 16
#define DOT11_MAX_FRAG_LEN 2346

@@ -5555,8 +5553,7 @@ int brcms_c_set_rateset(struct brcms_c_info *wlc, struct brcm_rateset *rs)

int brcms_c_set_beacon_period(struct brcms_c_info *wlc, u16 period)
{
- if (period < DOT11_MIN_BEACON_PERIOD ||
- period > DOT11_MAX_BEACON_PERIOD)
+ if (period == 0)
return -EINVAL;

wlc->default_bss->beacon_period = period;
--
1.7.9.5



2013-02-07 20:18:32

by Arend van Spriel

[permalink] [raw]
Subject: Re: [PATCH wireless-next] brcmsmac: fix u16 overflow warning

On 02/07/2013 08:35 PM, Tim Gardner wrote:
> DOT11_MIN_BEACON_PERIOD and DOT11_MAX_BEACON_PERIOD are
> superfluous. The only invalid beacon period is 0. Comparing
> a 16 bit quantity to 0xffff also causes a compile warning:
>
> drivers/net/wireless/brcm80211/brcmsmac/main.c:5560 brcms_c_set_beacon_period()
> warn: impossible condition '(period > 65535) => (0-65535 > 65535)'
>
> Observed from smatch analysis.
>
> Cc: Brett Rudley <[email protected]>
> Cc: "Franky (Zhenhui) Lin" <[email protected]>
> Cc: Hante Meuleman <[email protected]>
> Cc: "John W. Linville" <[email protected]>
> Cc: Pieter-Paul Giesberts <[email protected]>
> Cc: Seth Forshee <[email protected]>
> Cc: Hauke Mehrtens <[email protected]>
> Cc: [email protected]
> Cc: [email protected]
> Cc: [email protected]

Acked-by: Arend van Spriel <[email protected]>
> Signed-off-by: Tim Gardner <[email protected]>
> ---
> drivers/net/wireless/brcm80211/brcmsmac/main.c | 5 +----
> 1 file changed, 1 insertion(+), 4 deletions(-)
>
> diff --git a/drivers/net/wireless/brcm80211/brcmsmac/main.c b/drivers/net/wireless/brcm80211/brcmsmac/main.c
> index c26992a..080b54d 100644
> --- a/drivers/net/wireless/brcm80211/brcmsmac/main.c
> +++ b/drivers/net/wireless/brcm80211/brcmsmac/main.c
> @@ -101,8 +101,6 @@
> #define DOT11_RTS_LEN 16
> #define DOT11_CTS_LEN 10
> #define DOT11_BA_BITMAP_LEN 128
> -#define DOT11_MIN_BEACON_PERIOD 1
> -#define DOT11_MAX_BEACON_PERIOD 0xFFFF
> #define DOT11_MAXNUMFRAGS 16
> #define DOT11_MAX_FRAG_LEN 2346
>
> @@ -5555,8 +5553,7 @@ int brcms_c_set_rateset(struct brcms_c_info *wlc, struct brcm_rateset *rs)
>
> int brcms_c_set_beacon_period(struct brcms_c_info *wlc, u16 period)
> {
> - if (period < DOT11_MIN_BEACON_PERIOD ||
> - period > DOT11_MAX_BEACON_PERIOD)
> + if (period == 0)
> return -EINVAL;
>
> wlc->default_bss->beacon_period = period;
>