diff mbox

mwifiex: check driver status in connect and scan handlers

Message ID 1420631859-29004-1-git-send-email-akarwar@marvell.com (mailing list archive)
State Accepted
Delegated to: Kalle Valo
Headers show

Commit Message

Amitkumar Karwar Jan. 7, 2015, 11:57 a.m. UTC
Ignore scan and connection requests from cfg80211 when driver
unload is in process or previous command has timed out due to
a firmware bug. This patch fixes corner case system crash
issues.

Signed-off-by: Amitkumar Karwar <akarwar@marvell.com>
Signed-off-by: Cathy Luo <cluo@marvell.com>
---
 drivers/net/wireless/mwifiex/cfg80211.c | 8 ++++++++
 drivers/net/wireless/mwifiex/scan.c     | 6 ++++++
 2 files changed, 14 insertions(+)

Comments

Amitkumar Karwar Jan. 17, 2015, 1:05 p.m. UTC | #1
Hi Kalle,

>On Wed, Jan 7, 2015 at 5:27 PM, Amitkumar Karwar <akarwar@marvell.com> wrote:

>Ignore scan and connection requests from cfg80211 when driver

>unload is in process or previous command has timed out due to

>a firmware bug. This patch fixes corner case system crash

>issues.


>Signed-off-by: Amitkumar Karwar <akarwar@marvell.com>

>Signed-off-by: Cathy Luo <cluo@marvell.com>

>---

> drivers/net/wireless/mwifiex/cfg80211.c | 8 ++++++++

> drivers/net/wireless/mwifiex/scan.c     | 6 ++++++

> 2 files changed, 14 insertions(+)


Could you please check this patch? Let me know if you want me to resend it.

Best regards,
Amit
Kalle Valo Jan. 22, 2015, 2:13 p.m. UTC | #2
Amitkumar Karwar <akarwar@marvell.com> writes:

> Hi Kalle,
>
>>On Wed, Jan 7, 2015 at 5:27 PM, Amitkumar Karwar <akarwar@marvell.com> wrote:
>>Ignore scan and connection requests from cfg80211 when driver
>>unload is in process or previous command has timed out due to
>>a firmware bug. This patch fixes corner case system crash
>>issues.
>
>>Signed-off-by: Amitkumar Karwar <akarwar@marvell.com>
>>Signed-off-by: Cathy Luo <cluo@marvell.com>
>>---
>> drivers/net/wireless/mwifiex/cfg80211.c | 8 ++++++++
>> drivers/net/wireless/mwifiex/scan.c     | 6 ++++++
>> 2 files changed, 14 insertions(+)
>
> Could you please check this patch? Let me know if you want me to
> resend it.

Unfortunately I'm lagging behind because I decided to work on automating
the patch handling. I'm hoping that makes it easier for me to stay
up-to-date.

Also it would help me that instead of mailing me people would check the
status from the patchwork:

https://patchwork.kernel.org/project/linux-wireless/list/

If the patch is delegated to me and state is one of "New", "Under
Review" or "Awaiting Upstream" it means that the patch is in queue of
patches to process. If it's anything else it means that the patch is
dropped due to some reason, either for a reason (issues found during
review etc) or accidentally (which can also happen in rare cases).

This patch is in 'Under Review' state so I will get to it eventually:

https://patchwork.kernel.org/patch/5584351/

And even looks to be in top of my list so it shouldn't take long.
Amitkumar Karwar Jan. 23, 2015, 3:49 a.m. UTC | #3
SGkgS2FsbG8sDQoNCj5vd25lckB2Z2VyLmtlcm5lbC5vcmddIE9uIEJlaGFsZiBPZiBLYWxsZSBW
YWxvDQo+U2VudDogMjIgSmFudWFyeSAyMDE1IDE5OjQzDQo+VG86IEFtaXRrdW1hciBLYXJ3YXIN
Cj5DYzogQXZpbmFzaCBQYXRpbDsgQ2F0aHkgTHVvOyBsaW51eC13aXJlbGVzc0B2Z2VyLmtlcm5l
bC5vcmcNCj5TdWJqZWN0OiBSZTogW1BBVENIXSBtd2lmaWV4OiBjaGVjayBkcml2ZXIgc3RhdHVz
IGluIGNvbm5lY3QgYW5kIHNjYW4NCj5oYW5kbGVycw0KPg0KPkFtaXRrdW1hciBLYXJ3YXIgPGFr
YXJ3YXJAbWFydmVsbC5jb20+IHdyaXRlczoNCj4NCj4+IEhpIEthbGxlLA0KPj4NCj4+Pk9uIFdl
ZCwgSmFuIDcsIDIwMTUgYXQgNToyNyBQTSwgQW1pdGt1bWFyIEthcndhciA8YWthcndhckBtYXJ2
ZWxsLmNvbT4NCj53cm90ZToNCj4+Pklnbm9yZSBzY2FuIGFuZCBjb25uZWN0aW9uIHJlcXVlc3Rz
IGZyb20gY2ZnODAyMTEgd2hlbiBkcml2ZXIgdW5sb2FkDQo+Pj5pcyBpbiBwcm9jZXNzIG9yIHBy
ZXZpb3VzIGNvbW1hbmQgaGFzIHRpbWVkIG91dCBkdWUgdG8gYSBmaXJtd2FyZSBidWcuDQo+Pj5U
aGlzIHBhdGNoIGZpeGVzIGNvcm5lciBjYXNlIHN5c3RlbSBjcmFzaCBpc3N1ZXMuDQo+Pg0KPj4+
U2lnbmVkLW9mZi1ieTogQW1pdGt1bWFyIEthcndhciA8YWthcndhckBtYXJ2ZWxsLmNvbT4NCj4+
PlNpZ25lZC1vZmYtYnk6IENhdGh5IEx1byA8Y2x1b0BtYXJ2ZWxsLmNvbT4NCj4+Pi0tLQ0KPj4+
wqBkcml2ZXJzL25ldC93aXJlbGVzcy9td2lmaWV4L2NmZzgwMjExLmMgfCA4ICsrKysrKysrDQo+
Pj7CoGRyaXZlcnMvbmV0L3dpcmVsZXNzL213aWZpZXgvc2Nhbi5jwqAgwqAgwqB8IDYgKysrKysr
DQo+Pj7CoDIgZmlsZXMgY2hhbmdlZCwgMTQgaW5zZXJ0aW9ucygrKQ0KPj4NCj4+IENvdWxkIHlv
dSBwbGVhc2UgY2hlY2sgdGhpcyBwYXRjaD8gTGV0IG1lIGtub3cgaWYgeW91IHdhbnQgbWUgdG8N
Cj4+IHJlc2VuZCBpdC4NCj4NCj5VbmZvcnR1bmF0ZWx5IEknbSBsYWdnaW5nIGJlaGluZCBiZWNh
dXNlIEkgZGVjaWRlZCB0byB3b3JrIG9uIGF1dG9tYXRpbmcNCj50aGUgcGF0Y2ggaGFuZGxpbmcu
IEknbSBob3BpbmcgdGhhdCBtYWtlcyBpdCBlYXNpZXIgZm9yIG1lIHRvIHN0YXkgdXAtDQo+dG8t
ZGF0ZS4NCj4NCj5BbHNvIGl0IHdvdWxkIGhlbHAgbWUgdGhhdCBpbnN0ZWFkIG9mIG1haWxpbmcg
bWUgcGVvcGxlIHdvdWxkIGNoZWNrIHRoZQ0KPnN0YXR1cyBmcm9tIHRoZSBwYXRjaHdvcms6DQo+
DQo+aHR0cHM6Ly9wYXRjaHdvcmsua2VybmVsLm9yZy9wcm9qZWN0L2xpbnV4LXdpcmVsZXNzL2xp
c3QvDQo+DQo+SWYgdGhlIHBhdGNoIGlzIGRlbGVnYXRlZCB0byBtZSBhbmQgc3RhdGUgaXMgb25l
IG9mICJOZXciLCAiVW5kZXINCj5SZXZpZXciIG9yICJBd2FpdGluZyBVcHN0cmVhbSIgaXQgbWVh
bnMgdGhhdCB0aGUgcGF0Y2ggaXMgaW4gcXVldWUgb2YNCj5wYXRjaGVzIHRvIHByb2Nlc3MuIElm
IGl0J3MgYW55dGhpbmcgZWxzZSBpdCBtZWFucyB0aGF0IHRoZSBwYXRjaCBpcw0KPmRyb3BwZWQg
ZHVlIHRvIHNvbWUgcmVhc29uLCBlaXRoZXIgZm9yIGEgcmVhc29uIChpc3N1ZXMgZm91bmQgZHVy
aW5nDQo+cmV2aWV3IGV0Yykgb3IgYWNjaWRlbnRhbGx5ICh3aGljaCBjYW4gYWxzbyBoYXBwZW4g
aW4gcmFyZSBjYXNlcykuDQo+DQo+VGhpcyBwYXRjaCBpcyBpbiAnVW5kZXIgUmV2aWV3JyBzdGF0
ZSBzbyBJIHdpbGwgZ2V0IHRvIGl0IGV2ZW50dWFsbHk6DQo+DQo+aHR0cHM6Ly9wYXRjaHdvcmsu
a2VybmVsLm9yZy9wYXRjaC81NTg0MzUxLw0KPg0KDQpUaGFua3MgZm9yIHlvdXIgcmVwbHkuIFNv
dW5kcyBnb29kIHRvIG1lLiANCg0KUmVnYXJkcywNCkFtaXRrdW1hcg0K
--
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
Kalle Valo Jan. 23, 2015, 5:03 p.m. UTC | #4
> Ignore scan and connection requests from cfg80211 when driver
> unload is in process or previous command has timed out due to
> a firmware bug. This patch fixes corner case system crash
> issues.
> 
> Signed-off-by: Amitkumar Karwar <akarwar@marvell.com>
> Signed-off-by: Cathy Luo <cluo@marvell.com>

Thanks, applied to wireless-drivers-next.git.

Kalle Valo
--
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/drivers/net/wireless/mwifiex/cfg80211.c b/drivers/net/wireless/mwifiex/cfg80211.c
index 93ab36f..06feb44 100644
--- a/drivers/net/wireless/mwifiex/cfg80211.c
+++ b/drivers/net/wireless/mwifiex/cfg80211.c
@@ -1784,6 +1784,7 @@  mwifiex_cfg80211_connect(struct wiphy *wiphy, struct net_device *dev,
 			 struct cfg80211_connect_params *sme)
 {
 	struct mwifiex_private *priv = mwifiex_netdev_get_priv(dev);
+	struct mwifiex_adapter *adapter = priv->adapter;
 	int ret;
 
 	if (GET_BSS_ROLE(priv) != MWIFIEX_BSS_ROLE_STA) {
@@ -1798,6 +1799,13 @@  mwifiex_cfg80211_connect(struct wiphy *wiphy, struct net_device *dev,
 		return -EALREADY;
 	}
 
+	if (adapter->surprise_removed || adapter->is_cmd_timedout) {
+		wiphy_err(wiphy,
+			  "%s: Ignore connection. Card removed or FW in bad state\n",
+			  dev->name);
+		return -EFAULT;
+	}
+
 	wiphy_dbg(wiphy, "info: Trying to associate to %s and bssid %pM\n",
 		  (char *) sme->ssid, sme->bssid);
 
diff --git a/drivers/net/wireless/mwifiex/scan.c b/drivers/net/wireless/mwifiex/scan.c
index 984a7a4..e304f07 100644
--- a/drivers/net/wireless/mwifiex/scan.c
+++ b/drivers/net/wireless/mwifiex/scan.c
@@ -1429,6 +1429,12 @@  int mwifiex_scan_networks(struct mwifiex_private *priv,
 		return -EBUSY;
 	}
 
+	if (adapter->surprise_removed || adapter->is_cmd_timedout) {
+		dev_err(adapter->dev,
+			"Ignore scan. Card removed or firmware in bad state\n");
+		return -EFAULT;
+	}
+
 	spin_lock_irqsave(&adapter->mwifiex_cmd_lock, flags);
 	adapter->scan_processing = true;
 	spin_unlock_irqrestore(&adapter->mwifiex_cmd_lock, flags);