• Vasanthakumar Thiagarajan's avatar
    ath9k: Fix bug in starting ani · 6c3118e2
    Vasanthakumar Thiagarajan authored
    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: default avatarVasanthakumar Thiagarajan <vasanth@atheros.com>
    Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
    6c3118e2
main.c 53.5 KB