Message ID | 1455543353-20311-4-git-send-email-arend@broadcom.com (mailing list archive) |
---|---|
State | Accepted |
Delegated to: | Johannes Berg |
Headers | show |
On Mon, 2016-02-15 at 14:35 +0100, Arend van Spriel wrote: > When user-space has started a critical protocol session and a > disconnect > event occurs, the rdev::crit_prot_nlportid remains set. This caused a > subsequent NL80211_CMD_CRIT_PROTO_START to fail (-EBUSY). Fix this by > clearing the rdev attribute and call .crit_proto_stop() callback upon > disconnect event. > Applied. johannes -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/net/wireless/sme.c b/net/wireless/sme.c index 79bd3a1..5445581 100644 --- a/net/wireless/sme.c +++ b/net/wireless/sme.c @@ -917,6 +917,12 @@ void __cfg80211_disconnected(struct net_device *dev, const u8 *ie, nl80211_send_disconnected(rdev, dev, reason, ie, ie_len, from_ap); + /* stop critical protocol if supported */ + if (rdev->ops->crit_proto_stop && rdev->crit_proto_nlportid) { + rdev->crit_proto_nlportid = 0; + rdev_crit_proto_stop(rdev, wdev); + } + /* * Delete all the keys ... pairwise keys can't really * exist any more anyway, but default keys might.