• Johannes Berg's avatar
    [PATCH] mac80211: fix iff_promiscs, iff_allmultis race · 53918994
    Johannes Berg authored
    When we update the counters iff_promiscs and iff_allmultis
    in struct ieee80211_local we have no common lock held to
    protect them. The problem is that the update to each counter
    may not be atomic, so we could end up with iff_promiscs == -1
    in unfortunate conditions. To fix it, use atomic_t values.
    It doesn't matter whether the two counters are updated
    together atomically or not, if there are two invocations
    of set_multicast_list we will end up with multiple
    configure_filter() invocations of which the latter will always
    be correct.
    Signed-off-by: default avatarJohannes Berg <johannes@sipsolutions.net>
    Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
ieee80211_i.h 25.6 KB