linux-sg2042/drivers/net/wireless/ath
Vasanthakumar Thiagarajan 6c3118e230 ath9k: Fix bug in starting ani
There are few places where ANI is started without checking
if it is right to start. This might lead to a case where ani
timer would be left undeleted and cause improper memory acccess
during module unload. This bug is clearly exposed with
paprd support where the driver detects tx hang and does a
chip reset. During this reset ani is (re)started without checking
if it needs to be started. This would leave a timer scheduled
even after all the resources are freed and cause a panic.

This patch introduces a bit in sc_flags to indicate if ani
needs to be started in sw_scan_start() and ath_reset().
This would fix the following panic. This issue is easily seen
with ar9003 + paprd.

 BUG: unable to handle kernel paging request at 0000000000003f38
[<ffffffff81075391>] ? __queue_work+0x41/0x50
[<ffffffff8106afaa>] run_timer_softirq+0x17a/0x370
[<ffffffff81088be8>] ? tick_dev_program_event+0x48/0x110
[<ffffffff81061f69>] __do_softirq+0xb9/0x1f0
[<ffffffff810ba060>] ? handle_IRQ_event+0x50/0x160
[<ffffffff8100af5c>] call_softirq+0x1c/0x30
[<ffffffff8100c9f5>] do_softirq+0x65/0xa0
[<ffffffff81061e25>] irq_exit+0x85/0x90
[<ffffffff8155e095>] do_IRQ+0x75/0xf0
[<ffffffff815570d3>] ret_from_intr+0x0/0x11
<EOI>
[<ffffffff812fd67b>] ? acpi_idle_enter_simple+0xe4/0x119
[<ffffffff812fd674>] ? acpi_idle_enter_simple+0xdd/0x119
[<ffffffff81441c87>] cpuidle_idle_call+0xa7/0x140
[<ffffffff81008da3>] cpu_idle+0xb3/0x110
[<ffffffff81550722>] start_secondary+0x1ee/0x1f5

Signed-off-by: Vasanthakumar Thiagarajan <vasanth@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2010-06-23 15:28:42 -04:00
..
ar9170 ar9170usb: fix read from freed driver context 2010-05-26 14:49:48 -04:00
ath5k ath5k: initialize ah->ah_current_channel 2010-06-18 14:59:10 -04:00
ath9k ath9k: Fix bug in starting ani 2010-06-23 15:28:42 -04:00
Kconfig ath9k_htc: Support for AR9271 chipset. 2010-03-23 16:50:17 -04:00
Makefile ath9k: move hw code to its own module 2009-10-07 16:39:41 -04:00
ath.h ath: Add buffered register write operations 2010-04-16 15:47:04 -04:00
debug.c atheros: add common debug printing 2009-10-07 16:39:29 -04:00
debug.h ath9k_htc: Support for AR9271 chipset. 2010-03-23 16:50:17 -04:00
hw.c Net: wireless: ath: fix macros coding style issue in hw.c 2010-04-06 16:51:04 -04:00
main.c ath: add common ath_rxbuf_alloc() and make ath9k use it 2009-08-14 09:14:05 -04:00
reg.h atheros: define shared bssidmask setting 2009-10-07 16:39:28 -04:00
regd.c drivers/net: Remove unnecessary returns from void function()s 2010-05-14 00:19:28 -07:00
regd.h ath: Updates for regulatory and country codes. 2009-10-27 16:50:04 -04:00
regd_common.h ath: Updates for regulatory and country codes. 2009-10-27 16:50:04 -04:00