summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPontus Fuchs <pontus.fuchs@gmail.com>2014-01-16 14:00:40 (GMT)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2014-02-22 21:32:25 (GMT)
commitd87e47c32aad947e6ce5d3eb3ca077cabb0387b7 (patch)
tree7125f9c53cf83aecb5eb4d4abbd3c471af95ae45
parent9ee59d9a5b03f45d9b421b020947846d13f27d08 (diff)
downloadlinux-fsl-qoriq-d87e47c32aad947e6ce5d3eb3ca077cabb0387b7.tar.xz
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 626dc3b..c2853bb 100644
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
@@ -1655,9 +1655,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;
}