lkml.org 
[lkml]   [2018]   [Sep]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL 4.14 30/36] cfg80211: fix a type issue in ieee80211_chandef_to_operating_class()
    Date
    From: Dan Carpenter <dan.carpenter@oracle.com>

    [ Upstream commit 8442938c3a2177ba16043b3a935f2c78266ad399 ]

    The "chandef->center_freq1" variable is a u32 but "freq" is a u16 so we
    are truncating away the high bits. I noticed this bug because in commit
    9cf0a0b4b64a ("cfg80211: Add support for 60GHz band channels 5 and 6")
    we made "freq <= 56160 + 2160 * 6" a valid requency when before it was
    only "freq <= 56160 + 2160 * 4" that was valid. It introduces a static
    checker warning:

    net/wireless/util.c:1571 ieee80211_chandef_to_operating_class()
    warn: always true condition '(freq <= 56160 + 2160 * 6) => (0-u16max <= 69120)'

    But really we probably shouldn't have been truncating the high bits
    away to begin with.

    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    ---
    net/wireless/util.c | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    diff --git a/net/wireless/util.c b/net/wireless/util.c
    index c1238d582fd1..ca3361a3e750 100644
    --- a/net/wireless/util.c
    +++ b/net/wireless/util.c
    @@ -1449,7 +1449,7 @@ bool ieee80211_chandef_to_operating_class(struct cfg80211_chan_def *chandef,
    u8 *op_class)
    {
    u8 vht_opclass;
    - u16 freq = chandef->center_freq1;
    + u32 freq = chandef->center_freq1;

    if (freq >= 2412 && freq <= 2472) {
    if (chandef->width > NL80211_CHAN_WIDTH_40)
    --
    2.17.1
    \
     
     \ /
      Last update: 2018-09-24 16:58    [W:4.988 / U:0.316 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site