This is a note to let you know that I've just added the patch titled

    ath9k: Fix kernel panic during driver initilization

to the 3.2-stable tree which can be found at:
    
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     ath9k-fix-kernel-panic-during-driver-initilization.patch
and it can be found in the queue-3.2 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <[email protected]> know about it.


>From 07445f688218a48bde72316aed9de4fdcc173131 Mon Sep 17 00:00:00 2001
From: Mohammed Shafi Shajakhan <[email protected]>
Date: Thu, 2 Feb 2012 16:29:05 +0530
Subject: ath9k: Fix kernel panic during driver initilization

From: Mohammed Shafi Shajakhan <[email protected]>

commit 07445f688218a48bde72316aed9de4fdcc173131 upstream.

all works need to be initialized before ieee80211_register_hw
to prevent mac80211 call backs such as drv_start, drv_config
getting started. otherwise we would queue/cancel works before
initializing them and it leads to kernel panic.
this issue can be recreated with the following script
in Chrome laptops with AR928X cards, with background scan
running (or) Network manager is running

while true
do
sudo modprobe -v ath9k
sleep 3
sudo modprobe -r ath9k
sleep 3
done

         EIP: [<81040a47>] __cancel_work_timer+0xb8/0xe1 SS:ESP 0068:f6be9d70
         ---[ end trace 4f86d6139a9900ef ]---
         Registered led device: ath9k-phy0
         ieee80211 phy0: Atheros AR9280 Rev:2 mem=0xf88a0000,
         irq=16
         Kernel panic - not syncing: Fatal exception
         Pid: 456, comm: wpa_supplicant Tainted: G      D
         3.0.13 #1
        Call Trace:
         [<81379e21>] panic+0x53/0x14a
         [<81004a30>] oops_end+0x73/0x81
         [<81004b53>] die+0x4c/0x55
         [<81002710>] do_trap+0x7c/0x83
         [<81002855>] ? do_bounds+0x58/0x58
         [<810028cc>] do_invalid_op+0x77/0x81
         [<81040a47>] ? __cancel_work_timer+0xb8/0xe1
         [<810489ec>] ? sched_clock_cpu+0x81/0x11f
         [<8103f809>] ? wait_on_work+0xe2/0xf7
         [<8137f807>] error_code+0x67/0x6c
         [<810300d8>] ? wait_consider_task+0x4ba/0x84c
         [<81040a47>] ? __cancel_work_timer+0xb8/0xe1
         [<810380c9>] ? try_to_del_timer_sync+0x5f/0x67
         [<81040a91>] cancel_work_sync+0xf/0x11
         [<f88d7b7c>] ath_set_channel+0x62/0x25c [ath9k]
         [<f88d67d1>] ? ath9k_tx_last_beacon+0x26a/0x85c [ath9k]
         [<f88d8899>] ath_radio_disable+0x3f1/0x68e [ath9k]
         [<f90d0edb>] ieee80211_hw_config+0x111/0x116 [mac80211]
         [<f90dd95c>] __ieee80211_recalc_idle+0x919/0xa37 [mac80211]
         [<f90dda76>] __ieee80211_recalc_idle+0xa33/0xa37 [mac80211]
         [<812dbed8>] __dev_open+0x82/0xab

Cc: Gary Morain <[email protected]>
Cc: Paul Stewart <[email protected]>
Cc: Vasanthakumar Thiagarajan <[email protected]>
Tested-by: Mohammed Shafi Shajakhan <[email protected]>
Signed-off-by: Rajkumar Manoharan <[email protected]>
Signed-off-by: Mohammed Shafi Shajakhan <[email protected]>
Signed-off-by: John W. Linville <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>

---
 drivers/net/wireless/ath/ath9k/init.c |    9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

--- a/drivers/net/wireless/ath/ath9k/init.c
+++ b/drivers/net/wireless/ath/ath9k/init.c
@@ -775,6 +775,11 @@ int ath9k_init_device(u16 devid, struct
                ARRAY_SIZE(ath9k_tpt_blink));
 #endif
 
+       INIT_WORK(&sc->hw_reset_work, ath_reset_work);
+       INIT_WORK(&sc->hw_check_work, ath_hw_check);
+       INIT_WORK(&sc->paprd_work, ath_paprd_calibrate);
+       INIT_DELAYED_WORK(&sc->hw_pll_work, ath_hw_pll_work);
+
        /* Register with mac80211 */
        error = ieee80211_register_hw(hw);
        if (error)
@@ -793,10 +798,6 @@ int ath9k_init_device(u16 devid, struct
                        goto error_world;
        }
 
-       INIT_WORK(&sc->hw_reset_work, ath_reset_work);
-       INIT_WORK(&sc->hw_check_work, ath_hw_check);
-       INIT_WORK(&sc->paprd_work, ath_paprd_calibrate);
-       INIT_DELAYED_WORK(&sc->hw_pll_work, ath_hw_pll_work);
        sc->last_rssi = ATH_RSSI_DUMMY_MARKER;
 
        ath_init_leds(sc);


Patches currently in stable-queue which might be from [email protected] 
are

queue-3.2/ath9k-fix-kernel-panic-during-driver-initilization.patch
--
To unsubscribe from this list: send the line "unsubscribe stable" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to