diff mbox

[3/3] cfg80211: stop critical protocol session upon disconnect event

Message ID 1455543353-20311-4-git-send-email-arend@broadcom.com (mailing list archive)
State Accepted
Delegated to: Johannes Berg
Headers show

Commit Message

Arend van Spriel Feb. 15, 2016, 1:35 p.m. UTC
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.

Reviewed-by: Hante Meuleman <meuleman@broadcom.com>
Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com>
Signed-off-by: Arend van Spriel <arend@broadcom.com>
---
 net/wireless/sme.c | 6 ++++++
 1 file changed, 6 insertions(+)

Comments

Johannes Berg Feb. 23, 2016, 9:41 a.m. UTC | #1
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 mbox

Patch

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.