linux-wireless.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Kalle Valo <kvalo@qca.qualcomm.com>
To: <linville@tuxdriver.com>
Cc: <linux-wireless@vger.kernel.org>
Subject: [PATCH 29/31] ath6kl: fix crash when interface is closed but scan is ongoing
Date: Fri, 22 Jul 2011 08:42:02 +0300	[thread overview]
Message-ID: <1311313324-6766-31-git-send-email-kvalo@qca.qualcomm.com> (raw)
In-Reply-To: <1311313324-6766-1-git-send-email-kvalo@qca.qualcomm.com>

When ath6kl module was removed while a scan was ongoing the driver would
crash in ath6kl_cfg80211_scan_complete_event().

Fix the function not to iterate nodes when the scan is aborted. The nodes
are already freed when the module is being unloaded. This patch removes the
null check entirely as the wmi structure is not accessed anymore during
module unload.

Also fix a bug where the status was checked as a bitfield with '&' operator.
But it's not a bitfield, just a regular error code.

This is a port of my patch from ath6kl staging with the same title.

Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
---
 drivers/net/wireless/ath/ath6kl/cfg80211.c |   41 +++++++++++++++------------
 1 files changed, 23 insertions(+), 18 deletions(-)

diff --git a/drivers/net/wireless/ath/ath6kl/cfg80211.c b/drivers/net/wireless/ath/ath6kl/cfg80211.c
index eff9983..d1d4794 100644
--- a/drivers/net/wireless/ath/ath6kl/cfg80211.c
+++ b/drivers/net/wireless/ath/ath6kl/cfg80211.c
@@ -820,29 +820,34 @@ static int ath6kl_cfg80211_scan(struct wiphy *wiphy, struct net_device *ndev,
 
 void ath6kl_cfg80211_scan_complete_event(struct ath6kl *ar, int status)
 {
+	int i;
 
 	ath6kl_dbg(ATH6KL_DBG_WLAN_CFG, "%s: status %d\n", __func__, status);
 
-	if (ar->scan_req) {
-		/* Translate data to cfg80211 mgmt format */
-		ath6kl_wmi_iterate_nodes(ar->wmi, ath6kl_cfg80211_scan_node,
-					 ar->wdev->wiphy);
-
-		cfg80211_scan_done(ar->scan_req, ((status & -ECANCELED)
-						  || (status & -EBUSY)) ? true :
-				   false);
-
-		if (ar->scan_req->n_ssids && ar->scan_req->ssids[0].ssid_len) {
-			u8 i;
-
-			for (i = 0; i < ar->scan_req->n_ssids; i++) {
-				ath6kl_wmi_probedssid_cmd(ar->wmi, i + 1,
-							  DISABLE_SSID_FLAG,
-							  0, NULL);
-			}
+	if (!ar->scan_req)
+		return;
+
+	if ((status == -ECANCELED) || (status == -EBUSY)) {
+		cfg80211_scan_done(ar->scan_req, true);
+		goto out;
+	}
+
+	/* Translate data to cfg80211 mgmt format */
+	ath6kl_wmi_iterate_nodes(ar->wmi, ath6kl_cfg80211_scan_node,
+				 ar->wdev->wiphy);
+
+	cfg80211_scan_done(ar->scan_req, false);
+
+	if (ar->scan_req->n_ssids && ar->scan_req->ssids[0].ssid_len) {
+		for (i = 0; i < ar->scan_req->n_ssids; i++) {
+			ath6kl_wmi_probedssid_cmd(ar->wmi, i + 1,
+						  DISABLE_SSID_FLAG,
+						  0, NULL);
 		}
-		ar->scan_req = NULL;
 	}
+
+out:
+	ar->scan_req = NULL;
 }
 
 static int ath6kl_cfg80211_add_key(struct wiphy *wiphy, struct net_device *ndev,
-- 
1.7.1


  parent reply	other threads:[~2011-07-22  5:43 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-07-22  5:41 [PATCH 00/31] ath6kl: pending patches from ath6kl-cleanup Kalle Valo
2011-07-22  5:41 ` [PATCH 00/31] *** SUBJECT HERE *** Kalle Valo
2011-07-22  5:53   ` Kalle Valo
2011-07-22 13:40     ` John W. Linville
2011-07-22  5:41 ` [PATCH 01/31] ath6kl: cleanup callbacks for different scatter gather method Kalle Valo
2011-07-22  5:41 ` [PATCH 02/31] ath6kl: Move ath6kl_sdio_async_rw_scatter() down to other hif_ops functions Kalle Valo
2011-07-22  5:41 ` [PATCH 03/31] ath6kl: Remove struct hif_scatter_req_priv Kalle Valo
2011-07-22  5:41 ` [PATCH 04/31] ath6kl: Remove useless flags in hif_scatter_req Kalle Valo
2011-07-22  5:41 ` [PATCH 05/31] ath6kl: Remove endpoint reference from hif_scatter_req Kalle Valo
2011-07-22  5:41 ` [PATCH 06/31] ath6kl: Refactor refactor ath6kl_sdio_setup_scat_resource() Kalle Valo
2011-07-22  5:41 ` [PATCH 07/31] ath6kl: Cleanup ath6kl_sdio_enable_scatter() Kalle Valo
2011-07-22  5:41 ` [PATCH 08/31] ath6kl: Cleanup ath6kl_sdio_cleanup_scatter() Kalle Valo
2011-07-22  5:41 ` [PATCH 09/31] ath6kl: Move down scatter enable and cleanup functions Kalle Valo
2011-07-22  5:41 ` [PATCH 10/31] ath6kl: Merge scatter gather setup functions for two method Kalle Valo
2011-07-22  5:41 ` [PATCH 11/31] ath6kl: Moe virt_scat from hif_dev_scat_sup_info to hif_scatter_req Kalle Valo
2011-07-22  5:41 ` [PATCH 12/31] ath6kl: Refactor ath6kl_sdio_read_write_sync() Kalle Valo
2011-07-22  5:41 ` [PATCH 13/31] ath6kl: Merge scatter rw request functions into one Kalle Valo
2011-07-22  5:41 ` [PATCH 14/31] ath6kl: Remove ath6kldev_setup_msg_bndl() Kalle Valo
2011-07-22  5:41 ` [PATCH 15/31] ath6kl: Minor cleanup in ath6kldev_submit_scat_req() Kalle Valo
2011-07-22  5:41 ` [PATCH 16/31] ath6kl: Remove callback msg_pending() and used the function directly Kalle Valo
2011-07-22  5:41 ` [PATCH 17/31] ath6kl: Move bundle size from ath6kl_device to htc_target Kalle Valo
2011-07-22  5:41 ` [PATCH 18/31] ath6kl: Move block_sz and block_mask " Kalle Valo
2011-07-22  5:41 ` [PATCH 19/31] ath6kl: Move scatter information " Kalle Valo
2011-07-22  5:41 ` [PATCH 20/31] ath6kl: Bypass reading irq status based on chk_irq_status_cnt Kalle Valo
2011-07-22  5:41 ` [PATCH 21/31] ath6kl: Move chk_irq_status_cnt from ath6kl_device to htc_target Kalle Valo
2011-07-22  5:41 ` [PATCH 22/31] ath6kl: Remove unused struct ath6kl_async_reg_io_buffer Kalle Valo
2011-07-22  5:41 ` [PATCH 23/31] ath6kl: Print bad trailer data only when htc fails to parse trailer info Kalle Valo
2011-07-22  5:41 ` [PATCH 24/31] ath6kl: Rearrange the variable and the value position in IF condition Kalle Valo
2011-07-22  5:41 ` [PATCH 25/31] ath6kl: Avoid two memset to clear src and desr mac addr variable memory in ath6kl_wmi_dot11_hdr_remove() Kalle Valo
2011-07-22  5:41 ` [PATCH 26/31] ath6kl: Use bit field macros to maintain wlan enabled and disabled status Kalle Valo
2011-07-22  5:42 ` [PATCH 27/31] ath6kl: don't force foreground scan when connected Kalle Valo
2011-07-22  5:42 ` [PATCH 28/31] ath6kl: fix atomicity in ath6kl_cfg80211_scan_node() Kalle Valo
2011-07-22  5:42 ` Kalle Valo [this message]
2011-07-22  5:42 ` [PATCH 30/31] ath6kl: remove dependency to wireless extensions Kalle Valo
2011-07-22  5:42 ` [PATCH 31/31] ath6kl: change aggreation timeout message from an error to a debug message Kalle Valo

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1311313324-6766-31-git-send-email-kvalo@qca.qualcomm.com \
    --to=kvalo@qca.qualcomm.com \
    --cc=linux-wireless@vger.kernel.org \
    --cc=linville@tuxdriver.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).