lkml.org 
[lkml]   [2009]   [Jun]   [30]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[patch 066/108] cfg80211: fix in nl80211_set_reg()
    2.6.30-stable review patch.  If anyone has any objections, please let us know.

    ------------------

    From: Luis R. Rodriguez <lrodriguez@atheros.com>

    commit 61405e97788b1bc4e7c5be5b4ec04a73fc11bac2 upstream.

    There is a race on access to last_request and its alpha2
    through reg_is_valid_request() and us possibly processing
    first another regulatory request on another CPU. We avoid
    this improbably race by locking with the cfg80211_mutex as
    we should have done in the first place. While at it add
    the assert on locking on reg_is_valid_request().

    Signed-off-by: Luis R. Rodriguez <lrodriguez@atheros.com>
    Signed-off-by: John W. Linville <linville@tuxdriver.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

    ---
    net/wireless/nl80211.c | 5 ++++-
    net/wireless/reg.c | 2 ++
    2 files changed, 6 insertions(+), 1 deletion(-)

    --- a/net/wireless/nl80211.c
    +++ b/net/wireless/nl80211.c
    @@ -2388,6 +2388,8 @@ static int nl80211_set_reg(struct sk_buf
    return -EINVAL;
    }

    + mutex_lock(&cfg80211_mutex);
    +
    if (!reg_is_valid_request(alpha2)) {
    r = -EINVAL;
    goto bad_reg;
    @@ -2425,13 +2427,14 @@ static int nl80211_set_reg(struct sk_buf

    BUG_ON(rule_idx != num_rules);

    - mutex_lock(&cfg80211_mutex);
    r = set_regdom(rd);
    +
    mutex_unlock(&cfg80211_mutex);

    return r;

    bad_reg:
    + mutex_unlock(&cfg80211_mutex);
    kfree(rd);
    return r;
    }
    --- a/net/wireless/reg.c
    +++ b/net/wireless/reg.c
    @@ -389,6 +389,8 @@ static int call_crda(const char *alpha2)
    /* Used by nl80211 before kmalloc'ing our regulatory domain */
    bool reg_is_valid_request(const char *alpha2)
    {
    + assert_cfg80211_lock();
    +
    if (!last_request)
    return false;




    \
     
     \ /
      Last update: 2009-07-01 03:33    [W:0.030 / U:92.740 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site