aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPontus Fuchs <pontus.fuchs@gmail.com>2014-01-16 15:00:40 +0100
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2014-02-22 13:34:44 -0800
commitfe8457f1c3ab21d7e46ff6c6c21d1275297eb364 (patch)
tree2f956e740bd8ec6d839cfd714bf89f2718aa0834
parentc60ddd24a9cb4135fbc73585e9ae4a9a12441a05 (diff)
nl80211: Reset split_start when netlink skb is exhausted
commit f12cb2893069495726c21a4b0178705dacfecfe0 upstream. When the netlink skb is exhausted split_start is left set. In the subsequent retry, with a larger buffer, the dump is continued from the failing point instead of from the beginning. This was causing my rt28xx based USB dongle to now show up when running "iw list" with an old iw version without split dump support. Fixes: 3713b4e364ef ("nl80211: allow splitting wiphy information in dumps") Signed-off-by: Pontus Fuchs <pontus.fuchs@gmail.com> [avoid the entire workaround when state->split is set] Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r--net/wireless/nl80211.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c
index 138dc3bb8b6..16616f12d8e 100644
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
@@ -1677,9 +1677,10 @@ static int nl80211_dump_wiphy(struct sk_buff *skb, struct netlink_callback *cb)
* We can then retry with the larger buffer.
*/
if ((ret == -ENOBUFS || ret == -EMSGSIZE) &&
- !skb->len &&
+ !skb->len && !state->split &&
cb->min_dump_alloc < 4096) {
cb->min_dump_alloc = 4096;
+ state->split_start = 0;
rtnl_unlock();
return 1;
}