remarkable-linux/net/mac80211
Reinette Chatre 79733a865c mac80211: remove association work when processing deauth request
In https://bugzilla.kernel.org/show_bug.cgi?id=15794 a user encountered the
following:

[18967.469098] wlan0: authenticated
[18967.472527] wlan0: associate with 00:1c:10:b8:e3:ea (try 1)
[18967.472585] wlan0: deauthenticating from 00:1c:10:b8:e3:ea by local choice (reason=3)
[18967.672057] wlan0: associate with 00:1c:10:b8:e3:ea (try 2)
[18967.872357] wlan0: associate with 00:1c:10:b8:e3:ea (try 3)
[18968.072960] wlan0: association with 00:1c:10:b8:e3:ea timed out
[18968.076890] ------------[ cut here ]------------
[18968.076898] WARNING: at net/wireless/mlme.c:341 cfg80211_send_assoc_timeout+0xa8/0x140()
[18968.076900] Hardware name: GX628
[18968.076924] Pid: 1408, comm: phy0 Not tainted 2.6.34-rc4-00082-g250541f-dirty #3
[18968.076926] Call Trace:
[18968.076931]  [<ffffffff8103459e>] ?  warn_slowpath_common+0x6e/0xb0
[18968.076934]  [<ffffffff8157c2d8>] ?  cfg80211_send_assoc_timeout+0xa8/0x140
[18968.076937]  [<ffffffff8103ff8b>] ? mod_timer+0x10b/0x180
[18968.076940]  [<ffffffff8158f0fc>] ?  ieee80211_assoc_done+0xbc/0xc0
[18968.076943]  [<ffffffff81590d53>] ?  ieee80211_work_work+0x553/0x11c0
[18968.076945]  [<ffffffff8102d931>] ? finish_task_switch+0x41/0xb0
[18968.076948]  [<ffffffff81590800>] ?  ieee80211_work_work+0x0/0x11c0
[18968.076951]  [<ffffffff810476fb>] ? worker_thread+0x13b/0x210
[18968.076954]  [<ffffffff8104b6b0>] ?  autoremove_wake_function+0x0/0x30
[18968.076956]  [<ffffffff810475c0>] ? worker_thread+0x0/0x210
[18968.076959]  [<ffffffff8104b21e>] ? kthread+0x8e/0xa0
[18968.076962]  [<ffffffff810031f4>] ?  kernel_thread_helper+0x4/0x10
[18968.076964]  [<ffffffff8104b190>] ? kthread+0x0/0xa0
[18968.076966]  [<ffffffff810031f0>] ?  kernel_thread_helper+0x0/0x10
[18968.076968] ---[ end trace 8aa6265f4b1adfe0 ]---

As explained by Johannes Berg <johannes@sipsolutions.net>:

We authenticate successfully, and then userspace requests association.
Then we start that process, but the AP doesn't respond. While we're
still waiting for an AP response, userspace asks for a deauth. We do
the deauth, but don't abort the association work. Then once the
association work times out we tell cfg80211, but it no longer wants
to know since for all it is concerned we accepted the deauth that
also kills the association attempt.

Fix this by, upon receipt of deauth request, removing the association work
and continuing to send the deauth.

Unfortunately the user reporting the issue is not able to reproduce this
problem anymore and cannot verify this fix. This seems like a well understood
issue though and I thus present the patch.

Bug-identified-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2010-05-07 14:26:38 -04:00
..
aes_ccm.c
aes_ccm.h
aes_cmac.c
aes_cmac.h
agg-rx.c
agg-tx.c mac80211: remove bogus TX agg state assignment 2010-04-19 16:34:11 -04:00
cfg.c cfg80211/mac80211: allow registering for and sending action frames 2010-02-15 16:14:15 -05:00
cfg.h
debugfs.c mac80211: Added a new debugfs file for reading channel_type 2010-02-08 16:50:57 -05:00
debugfs.h
debugfs_key.c
debugfs_key.h
debugfs_netdev.c mac80211: Fix memory leak in ieee80211_if_write() 2010-03-10 16:29:11 -05:00
debugfs_netdev.h
debugfs_sta.c mac80211: reduce stack usage in sta_agg_status_read() 2010-02-01 15:40:07 -05:00
debugfs_sta.h
driver-ops.h mac80211: remove get_tx_stats() driver op 2010-02-08 16:51:01 -05:00
driver-trace.c
driver-trace.h mac80211: remove get_tx_stats() driver op 2010-02-08 16:51:01 -05:00
event.c
ht.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6 2009-12-28 15:09:11 -05:00
ibss.c mac80211: allow station add/remove to sleep 2010-02-08 16:50:53 -05:00
ieee80211_i.h cfg80211/mac80211: allow registering for and sending action frames 2010-02-15 16:14:15 -05:00
iface.c mac80211: fix netdev rename 2010-02-15 16:12:52 -05:00
Kconfig
key.c mac80211: add ieee80211_sdata_running 2009-12-28 16:54:49 -05:00
key.h
led.c
led.h
main.c mac80211: annotate station rcu dereferences 2010-04-06 15:53:30 -04:00
Makefile mac80211: Generalize off-channel operation helpers from scan code 2009-12-28 16:55:01 -05:00
mesh.c mac80211: Handle mesh action frames in ieee80211_rx_h_action 2010-04-06 15:53:28 -04:00
mesh.h
mesh_hwmp.c mac80211: fix PREQ processing and one small bug 2010-03-30 15:37:23 -04:00
mesh_pathtbl.c
mesh_plink.c mac80211: allow station add/remove to sleep 2010-02-08 16:50:53 -05:00
michael.c
michael.h
mlme.c mac80211: remove association work when processing deauth request 2010-05-07 14:26:38 -04:00
offchannel.c mac80211: Fixed netif_tx_wake_all_queues in IBSS mode 2010-01-15 16:58:28 -05:00
pm.c mac80211: allow station add/remove to sleep 2010-02-08 16:50:53 -05:00
rate.c Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6 2010-02-26 16:54:45 -05:00
rate.h mac80211: Fix HT rate control configuration 2010-03-03 15:39:21 -05:00
rc80211_minstrel.c
rc80211_minstrel.h
rc80211_minstrel_debugfs.c
rc80211_pid.h
rc80211_pid_algo.c mac80211: pid: replace open-coded msecs_to_jiffies 2010-01-19 16:25:15 -05:00
rc80211_pid_debugfs.c
rx.c mac80211: Handle mesh action frames in ieee80211_rx_h_action 2010-04-06 15:53:28 -04:00
scan.c Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6 2010-02-08 16:38:38 -05:00
spectmgmt.c
sta_info.c mac80211: annotate station rcu dereferences 2010-04-06 15:53:30 -04:00
sta_info.h mac80211: Deny TX BA session requests during disassociation 2010-02-10 16:36:52 -05:00
status.c cfg80211/mac80211: allow registering for and sending action frames 2010-02-15 16:14:15 -05:00
tkip.c mac80211: pass vif and station to update_tkip_key 2010-01-22 16:08:55 -05:00
tkip.h
tx.c mac80211: move netdev queue enabling to correct spot 2010-03-30 15:37:28 -04:00
util.c mac80211: move netdev queue enabling to correct spot 2010-03-30 15:37:28 -04:00
wep.c mac80211: avoid NULL ptr deref when using WEP 2010-01-22 12:39:14 -05:00
wep.h
wme.c mac80211: fix-up build breakage in 2.6.33 2010-01-06 15:35:49 -05:00
wme.h mac80211: fix skb buffering issue 2010-01-05 16:21:40 -05:00
work.c mac80211: fix direct probe loop on ieee80211_work_purge 2010-02-26 16:59:12 -05:00
wpa.c mac80211: move control.hw_key assignment 2010-01-19 16:25:19 -05:00
wpa.h