• Johannes Berg's avatar
    regulatory: fix reg_is_valid_request handling · 6913b49a
    Johannes Berg authored
    There's a bug with the world regulatory domain, it
    can be updated any time which is different from all
    other regdomains that can only be updated once after
    a request for them. Fix this by adding a check for
    "processed" to the reg_is_valid_request() function
    and clear that when doing a request.
    While looking at this I also found another locking
    bug, last_request is protected by the reg_mutex not
    the cfg80211_mutex so the code in nl80211 is racy.
    Remove that code as it only tries to prevent an
    allocation in an error case, which isn't necessary.
    Then the function can also become static and locking
    in nl80211 can have a smaller scope.
    Also change __set_regdom() to do the checks earlier
    and not different for world/other regdomains.
    Acked-by: default avatarLuis R. Rodriguez <mcgrof@do-not-panic.com>
    Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
nl80211.c 241 KB