Commit 9c167b2d authored by Julian Squires's avatar Julian Squires Committed by Johannes Berg
Browse files

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: default avatarJulian Squires <julian@cipht.net>
Link: https://lore.kernel.org/r/20200720145033.401307-1-julian@cipht.net


[reword commit message]
Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
parent f2a0c187
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -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;
		}