lkml.org 
[lkml]   [2020]   [Oct]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.8 278/633] nl80211: fix OBSS PD min and max offset validation
    Date
    From: Rajkumar Manoharan <rmanohar@codeaurora.org>

    [ Upstream commit 6c8b6e4a5f745ec49286ac0a3f1d591a34818f82 ]

    The SRG min and max offset won't present when SRG Information Present of
    SR control field of Spatial Reuse Parameter Set element set to 0. Per
    spec. IEEE802.11ax D7.0, SRG OBSS PD Min Offset ≤ SRG OBSS PD Max
    Offset. Hence fix the constrain check to allow same values in both
    offset and also call appropriate nla_get function to read the values.

    Fixes: 796e90f42b7e ("cfg80211: add support for parsing OBBS_PD attributes")
    Signed-off-by: Rajkumar Manoharan <rmanohar@codeaurora.org>
    Link: https://lore.kernel.org/r/1601278091-20313-1-git-send-email-rmanohar@codeaurora.org
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    net/wireless/nl80211.c | 18 ++++++++----------
    1 file changed, 8 insertions(+), 10 deletions(-)

    diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c
    index 4d7b255067225..7cbb94b4d4917 100644
    --- a/net/wireless/nl80211.c
    +++ b/net/wireless/nl80211.c
    @@ -4683,16 +4683,14 @@ static int nl80211_parse_he_obss_pd(struct nlattr *attrs,
    if (err)
    return err;

    - if (!tb[NL80211_HE_OBSS_PD_ATTR_MIN_OFFSET] ||
    - !tb[NL80211_HE_OBSS_PD_ATTR_MAX_OFFSET])
    - return -EINVAL;
    -
    - he_obss_pd->min_offset =
    - nla_get_u32(tb[NL80211_HE_OBSS_PD_ATTR_MIN_OFFSET]);
    - he_obss_pd->max_offset =
    - nla_get_u32(tb[NL80211_HE_OBSS_PD_ATTR_MAX_OFFSET]);
    -
    - if (he_obss_pd->min_offset >= he_obss_pd->max_offset)
    + if (tb[NL80211_HE_OBSS_PD_ATTR_MIN_OFFSET])
    + he_obss_pd->min_offset =
    + nla_get_u8(tb[NL80211_HE_OBSS_PD_ATTR_MIN_OFFSET]);
    + if (tb[NL80211_HE_OBSS_PD_ATTR_MAX_OFFSET])
    + he_obss_pd->max_offset =
    + nla_get_u8(tb[NL80211_HE_OBSS_PD_ATTR_MAX_OFFSET]);
    +
    + if (he_obss_pd->min_offset > he_obss_pd->max_offset)
    return -EINVAL;

    he_obss_pd->enable = true;
    --
    2.25.1


    \
     
     \ /
      Last update: 2020-10-27 16:13    [W:6.371 / U:0.816 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site