nl80211: fix another nl80211_fam.attrbuf race
This is similar to the race Linus had reported, but in this case it's an older bug: nl80211_prepare_wdev_dump() uses the wiphy index in cb->args[0] as it is and thus parses the message over and over again instead of just once because 0 is the first valid wiphy index. Similar code in nl80211_testmode_dump() correctly offsets the wiphy_index by 1, do that here as well. Cc: stable@vger.kernel.org Reported-by: Ben Hutchings <ben@decadent.org.uk> Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
parent
23df0b7319
commit
c319d50bfc
1 changed files with 4 additions and 2 deletions
|
@ -441,10 +441,12 @@ static int nl80211_prepare_wdev_dump(struct sk_buff *skb,
|
||||||
goto out_unlock;
|
goto out_unlock;
|
||||||
}
|
}
|
||||||
*rdev = wiphy_to_dev((*wdev)->wiphy);
|
*rdev = wiphy_to_dev((*wdev)->wiphy);
|
||||||
cb->args[0] = (*rdev)->wiphy_idx;
|
/* 0 is the first index - add 1 to parse only once */
|
||||||
|
cb->args[0] = (*rdev)->wiphy_idx + 1;
|
||||||
cb->args[1] = (*wdev)->identifier;
|
cb->args[1] = (*wdev)->identifier;
|
||||||
} else {
|
} else {
|
||||||
struct wiphy *wiphy = wiphy_idx_to_wiphy(cb->args[0]);
|
/* subtract the 1 again here */
|
||||||
|
struct wiphy *wiphy = wiphy_idx_to_wiphy(cb->args[0] - 1);
|
||||||
struct wireless_dev *tmp;
|
struct wireless_dev *tmp;
|
||||||
|
|
||||||
if (!wiphy) {
|
if (!wiphy) {
|
||||||
|
|
Loading…
Reference in a new issue