diff options
author | Julian Squires <julian@cipht.net> | 2020-07-20 12:20:35 -0230 |
---|---|---|
committer | Johannes Berg <johannes.berg@intel.com> | 2020-07-31 09:24:22 +0200 |
commit | 9c167b2ddc1a89e6f6378e65bfd20e8c0ddf65f1 (patch) | |
tree | 72096788c66cd02979fcc17c6d031ced960c9de4 /net/wireless | |
parent | f2a0c18759072dbd5135f72a8035f6fb838df425 (diff) |
cfg80211: allow vendor dumpit to terminate by returning 0
nl80211 vendor netlink dumpit, like netlink_callback->dump, should
signal successful completion by returning 0.
Currently, that will just cause dumpit to be called again, possibly
many times until an error occurs. Since skb->len is never going to be
0 by the time dumpit is called, the only way for dumpit to signal
completion is by returning an error. If it returns a positive value,
the current message is cancelled, but that positive value is returned
and nl80211_vendor_cmd_dump gets called again.
Fix that by passing a return value of 0 through.
Signed-off-by: Julian Squires <julian@cipht.net>
Link: https://lore.kernel.org/r/20200720145033.401307-1-julian@cipht.net
[reword commit message]
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'net/wireless')
-rw-r--r-- | net/wireless/nl80211.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c index 0e07fb8585fb..e9cf08a1a8b9 100644 --- a/net/wireless/nl80211.c +++ b/net/wireless/nl80211.c @@ -13479,7 +13479,7 @@ static int nl80211_vendor_cmd_dump(struct sk_buff *skb, if (err == -ENOBUFS || err == -ENOENT) { genlmsg_cancel(skb, hdr); break; - } else if (err) { + } else if (err <= 0) { genlmsg_cancel(skb, hdr); goto out; } |