lkml.org 
[lkml]   [2019]   [Oct]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.19 047/114] cfg80211: initialize on-stack chandefs
    Date
    From: Johannes Berg <johannes.berg@intel.com>

    commit f43e5210c739fe76a4b0ed851559d6902f20ceb1 upstream.

    In a few places we don't properly initialize on-stack chandefs,
    resulting in EDMG data to be non-zero, which broke things.

    Additionally, in a few places we rely on the driver to init the
    data completely, but perhaps we shouldn't as non-EDMG drivers
    may not initialize the EDMG data, also initialize it there.

    Cc: stable@vger.kernel.org
    Fixes: 2a38075cd0be ("nl80211: Add support for EDMG channels")
    Reported-by: Dmitry Osipenko <digetx@gmail.com>
    Tested-by: Dmitry Osipenko <digetx@gmail.com>
    Link: https://lore.kernel.org/r/1569239475-I2dcce394ecf873376c386a78f31c2ec8b538fa25@changeid
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    net/wireless/nl80211.c | 4 +++-
    net/wireless/reg.c | 2 +-
    net/wireless/wext-compat.c | 2 +-
    3 files changed, 5 insertions(+), 3 deletions(-)

    --- a/net/wireless/nl80211.c
    +++ b/net/wireless/nl80211.c
    @@ -2299,6 +2299,8 @@ static int nl80211_parse_chandef(struct

    control_freq = nla_get_u32(info->attrs[NL80211_ATTR_WIPHY_FREQ]);

    + memset(chandef, 0, sizeof(*chandef));
    +
    chandef->chan = ieee80211_get_channel(&rdev->wiphy, control_freq);
    chandef->width = NL80211_CHAN_WIDTH_20_NOHT;
    chandef->center_freq1 = control_freq;
    @@ -2819,7 +2821,7 @@ static int nl80211_send_iface(struct sk_

    if (rdev->ops->get_channel) {
    int ret;
    - struct cfg80211_chan_def chandef;
    + struct cfg80211_chan_def chandef = {};

    ret = rdev_get_channel(rdev, wdev, &chandef);
    if (ret == 0) {
    --- a/net/wireless/reg.c
    +++ b/net/wireless/reg.c
    @@ -2095,7 +2095,7 @@ static void reg_call_notifier(struct wip

    static bool reg_wdev_chan_valid(struct wiphy *wiphy, struct wireless_dev *wdev)
    {
    - struct cfg80211_chan_def chandef;
    + struct cfg80211_chan_def chandef = {};
    struct cfg80211_registered_device *rdev = wiphy_to_rdev(wiphy);
    enum nl80211_iftype iftype;

    --- a/net/wireless/wext-compat.c
    +++ b/net/wireless/wext-compat.c
    @@ -800,7 +800,7 @@ static int cfg80211_wext_giwfreq(struct
    {
    struct wireless_dev *wdev = dev->ieee80211_ptr;
    struct cfg80211_registered_device *rdev = wiphy_to_rdev(wdev->wiphy);
    - struct cfg80211_chan_def chandef;
    + struct cfg80211_chan_def chandef = {};
    int ret;

    switch (wdev->iftype) {

    \
     
     \ /
      Last update: 2019-10-10 10:58    [W:3.672 / U:0.012 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site