linux-wireless.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* ath9k doesn't clean up virtual wifis on rmmod, and crashes.
@ 2010-07-03  6:26 Ben Greear
  2010-07-03  7:02 ` Vasanthakumar Thiagarajan
  0 siblings, 1 reply; 9+ messages in thread
From: Ben Greear @ 2010-07-03  6:26 UTC (permalink / raw)
  To: linux-wireless

It seems to me that in 2.6.34, there is no code to clean up
virtual wiphys in ath9k on rmmod.  Also, ath9k mailing list
is returning error about mis-configured DNS server.

This is with un-modified ath9k driver and is repeatable
every time on my system (crash is often different, but
it always crashes very quickly).

[root@atom ~]# echo add=5 > /debug/ath9k/phy1/wiphy
-bash: /debug/ath9k/phy1/wiphy: No such file or directory
[root@atom ~]# echo add=5 > /debug/ath9k/phy0/wiphy
Jul  2 23:22:19 atom kernel: phy1: Selected rate control algorithm 'ath9k_rate_control'
[root@atom ~]# Jul  2 23:22:19 atom kernel: ADDRCONF(NETDEV_UP): wlan1: link is not ready
rmmod ath9k
Jul  2 23:22:24 atom kernel: ath9k 0000:05:00.0: PCI INT A disabled
Jul  2 23:22:24 atom kernel: ath9k: Driver unloaded
[root@atom ~]# BUG: spinlock bad magic on CPU#1, iw/2877
  lock: f8a476c0, .magic: 00000000, .owner: <none>/-1, .owner_cpu: 0
Pid: 2877, comm: iw Not tainted 2.6.34 #7
Call Trace:
  [<c0730e34>] ? printk+0xf/0x13
  [<c05710d6>] spin_bug+0x7b/0x86
  [<c0440b76>] ? delayed_work_timer_fn+0x0/0x30
  [<c0571171>] do_raw_spin_lock+0x1e/0x125
  [<c042f91e>] ? scheduler_tick+0xd6/0x1c9
  [<c0440b76>] ? delayed_work_timer_fn+0x0/0x30
  [<c0732a6d>] _raw_spin_lock_irqsave+0x1b/0x20
  [<c0440b59>] __queue_work+0x12/0x2f
  [<c0440b76>] ? delayed_work_timer_fn+0x0/0x30
  [<c0440ba4>] delayed_work_timer_fn+0x2e/0x30

I'm new to hacking on this driver..but would love to test
patches, and if someone wants to suggest a good point in
the code to remove the virtual phys, I'll make the attempt.

Thanks,
Ben

-- 
Ben Greear <greearb@candelatech.com>
Candela Technologies Inc  http://www.candelatech.com

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: ath9k doesn't clean up virtual wifis on rmmod, and crashes.
  2010-07-03  6:26 ath9k doesn't clean up virtual wifis on rmmod, and crashes Ben Greear
@ 2010-07-03  7:02 ` Vasanthakumar Thiagarajan
  2010-07-03 16:34   ` Ben Greear
  0 siblings, 1 reply; 9+ messages in thread
From: Vasanthakumar Thiagarajan @ 2010-07-03  7:02 UTC (permalink / raw)
  To: Ben Greear; +Cc: linux-wireless@vger.kernel.org

On Sat, Jul 03, 2010 at 11:56:14AM +0530, Ben Greear wrote:
> It seems to me that in 2.6.34, there is no code to clean up
> virtual wiphys in ath9k on rmmod.  Also, ath9k mailing list
> is returning error about mis-configured DNS server.
> 
> This is with un-modified ath9k driver and is repeatable
> every time on my system (crash is often different, but
> it always crashes very quickly).
> 
> [root@atom ~]# echo add=5 > /debug/ath9k/phy1/wiphy
> -bash: /debug/ath9k/phy1/wiphy: No such file or directory
> [root@atom ~]# echo add=5 > /debug/ath9k/phy0/wiphy
> Jul  2 23:22:19 atom kernel: phy1: Selected rate control algorithm 'ath9k_rate_control'
> [root@atom ~]# Jul  2 23:22:19 atom kernel: ADDRCONF(NETDEV_UP): wlan1: link is not ready
> rmmod ath9k
> Jul  2 23:22:24 atom kernel: ath9k 0000:05:00.0: PCI INT A disabled
> Jul  2 23:22:24 atom kernel: ath9k: Driver unloaded
> [root@atom ~]# BUG: spinlock bad magic on CPU#1, iw/2877
>   lock: f8a476c0, .magic: 00000000, .owner: <none>/-1, .owner_cpu: 0
> Pid: 2877, comm: iw Not tainted 2.6.34 #7
> Call Trace:
>   [<c0730e34>] ? printk+0xf/0x13
>   [<c05710d6>] spin_bug+0x7b/0x86
>   [<c0440b76>] ? delayed_work_timer_fn+0x0/0x30
>   [<c0571171>] do_raw_spin_lock+0x1e/0x125
>   [<c042f91e>] ? scheduler_tick+0xd6/0x1c9
>   [<c0440b76>] ? delayed_work_timer_fn+0x0/0x30
>   [<c0732a6d>] _raw_spin_lock_irqsave+0x1b/0x20
>   [<c0440b59>] __queue_work+0x12/0x2f
>   [<c0440b76>] ? delayed_work_timer_fn+0x0/0x30
>   [<c0440ba4>] delayed_work_timer_fn+0x2e/0x30
> 
> I'm new to hacking on this driver..but would love to test
> patches, and if someone wants to suggest a good point in
> the code to remove the virtual phys, I'll make the attempt.

Can you please try this patch?


diff --git a/drivers/net/wireless/ath/ath9k/ath9k.h b/drivers/net/wireless/ath/ath9k/ath9k.h
index 3a14630..6218890 100644
--- a/drivers/net/wireless/ath/ath9k/ath9k.h
+++ b/drivers/net/wireless/ath/ath9k/ath9k.h
@@ -516,6 +516,7 @@ void ath_deinit_leds(struct ath_softc *sc);
 #define SC_OP_TSF_RESET              BIT(11)
 #define SC_OP_BT_PRIORITY_DETECTED   BIT(12)
 #define SC_OP_BT_SCAN		     BIT(13)
+#define SC_OP_ANI_RUN		     BIT(14)
 
 /* Powersave flags */
 #define PS_WAIT_FOR_BEACON        BIT(0)
diff --git a/drivers/net/wireless/ath/ath9k/main.c b/drivers/net/wireless/ath/ath9k/main.c
index 5af2596..41a317d 100644
--- a/drivers/net/wireless/ath/ath9k/main.c
+++ b/drivers/net/wireless/ath/ath9k/main.c
@@ -451,6 +451,10 @@ static void ath_start_ani(struct ath_common *common)
 {
 	struct ath_hw *ah = common->ah;
 	unsigned long timestamp = jiffies_to_msecs(jiffies);
+	struct ath_softc *sc = (struct ath_softc *) common->priv;
+
+	if (!(sc->sc_flags & SC_OP_ANI_RUN))
+		return;
 
 	common->ani.longcal_timer = timestamp;
 	common->ani.shortcal_timer = timestamp;
@@ -766,11 +770,13 @@ static void ath9k_bss_assoc_info(struct ath_softc *sc,
 		/* Reset rssi stats */
 		sc->sc_ah->stats.avgbrssi = ATH_RSSI_DUMMY_MARKER;
 
+		sc->sc_flags |= SC_OP_ANI_RUN;
 		ath_start_ani(common);
 	} else {
 		ath_print(common, ATH_DBG_CONFIG, "Bss Info DISASSOC\n");
 		common->curaid = 0;
 		/* Stop ANI */
+		sc->sc_flags &= ~SC_OP_ANI_RUN;
 		del_timer_sync(&common->ani.timer);
 	}
 }
@@ -1376,8 +1382,10 @@ static int ath9k_add_interface(struct ieee80211_hw *hw,
 
 	if (vif->type == NL80211_IFTYPE_AP    ||
 	    vif->type == NL80211_IFTYPE_ADHOC ||
-	    vif->type == NL80211_IFTYPE_MONITOR)
+	    vif->type == NL80211_IFTYPE_MONITOR) {
+		sc->sc_flags |= SC_OP_ANI_RUN;
 		ath_start_ani(common);
+	}
 
 out:
 	mutex_unlock(&sc->mutex);
@@ -1398,6 +1406,7 @@ static void ath9k_remove_interface(struct ieee80211_hw *hw,
 	mutex_lock(&sc->mutex);
 
 	/* Stop ANI */
+	sc->sc_flags &= ~SC_OP_ANI_RUN;
 	del_timer_sync(&common->ani.timer);
 
 	/* Reclaim beacon resources */
-- 


Vasanth

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: ath9k doesn't clean up virtual wifis on rmmod, and crashes.
  2010-07-03  7:02 ` Vasanthakumar Thiagarajan
@ 2010-07-03 16:34   ` Ben Greear
  2010-07-03 17:57     ` Ben Greear
  2010-07-04  9:35     ` Vasanthakumar Thiagarajan
  0 siblings, 2 replies; 9+ messages in thread
From: Ben Greear @ 2010-07-03 16:34 UTC (permalink / raw)
  To: Vasanthakumar Thiagarajan; +Cc: linux-wireless@vger.kernel.org

On 07/03/2010 12:02 AM, Vasanthakumar Thiagarajan wrote:
> On Sat, Jul 03, 2010 at 11:56:14AM +0530, Ben Greear wrote:
>> It seems to me that in 2.6.34, there is no code to clean up
>> virtual wiphys in ath9k on rmmod.  Also, ath9k mailing list
>> is returning error about mis-configured DNS server.
>>
>> This is with un-modified ath9k driver and is repeatable
>> every time on my system (crash is often different, but
>> it always crashes very quickly).
>>
>> [root@atom ~]# echo add=5>  /debug/ath9k/phy1/wiphy
>> -bash: /debug/ath9k/phy1/wiphy: No such file or directory
>> [root@atom ~]# echo add=5>  /debug/ath9k/phy0/wiphy
>> Jul  2 23:22:19 atom kernel: phy1: Selected rate control algorithm 'ath9k_rate_control'
>> [root@atom ~]# Jul  2 23:22:19 atom kernel: ADDRCONF(NETDEV_UP): wlan1: link is not ready
>> rmmod ath9k
>> Jul  2 23:22:24 atom kernel: ath9k 0000:05:00.0: PCI INT A disabled
>> Jul  2 23:22:24 atom kernel: ath9k: Driver unloaded
>> [root@atom ~]# BUG: spinlock bad magic on CPU#1, iw/2877
>>    lock: f8a476c0, .magic: 00000000, .owner:<none>/-1, .owner_cpu: 0
>> Pid: 2877, comm: iw Not tainted 2.6.34 #7
>> Call Trace:
>>    [<c0730e34>] ? printk+0xf/0x13
>>    [<c05710d6>] spin_bug+0x7b/0x86
>>    [<c0440b76>] ? delayed_work_timer_fn+0x0/0x30
>>    [<c0571171>] do_raw_spin_lock+0x1e/0x125
>>    [<c042f91e>] ? scheduler_tick+0xd6/0x1c9
>>    [<c0440b76>] ? delayed_work_timer_fn+0x0/0x30
>>    [<c0732a6d>] _raw_spin_lock_irqsave+0x1b/0x20
>>    [<c0440b59>] __queue_work+0x12/0x2f
>>    [<c0440b76>] ? delayed_work_timer_fn+0x0/0x30
>>    [<c0440ba4>] delayed_work_timer_fn+0x2e/0x30
>>
>> I'm new to hacking on this driver..but would love to test
>> patches, and if someone wants to suggest a good point in
>> the code to remove the virtual phys, I'll make the attempt.
>
> Can you please try this patch?

It still crashes for me, and backtraces look similar.

Were you able to reproduce the crash?

Thanks,
Ben


-- 
Ben Greear <greearb@candelatech.com>
Candela Technologies Inc  http://www.candelatech.com

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: ath9k doesn't clean up virtual wifis on rmmod, and crashes.
  2010-07-03 16:34   ` Ben Greear
@ 2010-07-03 17:57     ` Ben Greear
  2010-07-04  9:35     ` Vasanthakumar Thiagarajan
  1 sibling, 0 replies; 9+ messages in thread
From: Ben Greear @ 2010-07-03 17:57 UTC (permalink / raw)
  To: Vasanthakumar Thiagarajan; +Cc: linux-wireless@vger.kernel.org

Just for reference, same problem on un-modified 2.6.35-rc3+ (pulled last night)

The crash below is from reproducing it with your patch included.

[root@atom ~]# ls
anaconda-ks.cfg  Documents  Music     Public     Videos
Desktop          Downloads  Pictures  Templates
[root@atom ~]# echo add > /debug/ath9k/phy0/wiphy
Jul  3 10:55:24 atom kernel: phy1: Selected rate control algorithm 'ath9k_rate_control'
[root@atom ~]# Jul  3 10:55:25 atom kernel: ADDRCONF(NETDEV_UP): wlan1: link is not ready

[root@atom ~]# rmmod ath9k
BUG: unable to handle kernel NULL pointer dereference at 000000a4
IP: [<f8d65fd1>] ath9k_hw_intrpend+0x6/0x49 [ath9k_hw]
*pde = 00000000
Oops: 0000 [#1] SMP
last sysfs file: /sys/devices/pci0000:00/0000:00:1e.0/0000:05:03.0/class
Modules linked in:

(It reboots before printing anything else to console).


Thanks,
Ben

-- 
Ben Greear <greearb@candelatech.com>
Candela Technologies Inc  http://www.candelatech.com

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: ath9k doesn't clean up virtual wifis on rmmod, and crashes.
  2010-07-03 16:34   ` Ben Greear
  2010-07-03 17:57     ` Ben Greear
@ 2010-07-04  9:35     ` Vasanthakumar Thiagarajan
  2010-07-04 15:59       ` Ben Greear
  1 sibling, 1 reply; 9+ messages in thread
From: Vasanthakumar Thiagarajan @ 2010-07-04  9:35 UTC (permalink / raw)
  To: Ben Greear; +Cc: Vasanth Thiagarajan, linux-wireless@vger.kernel.org

On Sat, Jul 03, 2010 at 10:04:09PM +0530, Ben Greear wrote:
> On 07/03/2010 12:02 AM, Vasanthakumar Thiagarajan wrote:
> > On Sat, Jul 03, 2010 at 11:56:14AM +0530, Ben Greear wrote:
> >> It seems to me that in 2.6.34, there is no code to clean up
> >> virtual wiphys in ath9k on rmmod.  Also, ath9k mailing list
> >> is returning error about mis-configured DNS server.
> >>
> >> This is with un-modified ath9k driver and is repeatable
> >> every time on my system (crash is often different, but
> >> it always crashes very quickly).
> >>
> >> [root@atom ~]# echo add=5>  /debug/ath9k/phy1/wiphy
> >> -bash: /debug/ath9k/phy1/wiphy: No such file or directory
> >> [root@atom ~]# echo add=5>  /debug/ath9k/phy0/wiphy
> >> Jul  2 23:22:19 atom kernel: phy1: Selected rate control algorithm 'ath9k_rate_control'
> >> [root@atom ~]# Jul  2 23:22:19 atom kernel: ADDRCONF(NETDEV_UP): wlan1: link is not ready
> >> rmmod ath9k
> >> Jul  2 23:22:24 atom kernel: ath9k 0000:05:00.0: PCI INT A disabled
> >> Jul  2 23:22:24 atom kernel: ath9k: Driver unloaded
> >> [root@atom ~]# BUG: spinlock bad magic on CPU#1, iw/2877
> >>    lock: f8a476c0, .magic: 00000000, .owner:<none>/-1, .owner_cpu: 0
> >> Pid: 2877, comm: iw Not tainted 2.6.34 #7
> >> Call Trace:
> >>    [<c0730e34>] ? printk+0xf/0x13
> >>    [<c05710d6>] spin_bug+0x7b/0x86
> >>    [<c0440b76>] ? delayed_work_timer_fn+0x0/0x30
> >>    [<c0571171>] do_raw_spin_lock+0x1e/0x125
> >>    [<c042f91e>] ? scheduler_tick+0xd6/0x1c9
> >>    [<c0440b76>] ? delayed_work_timer_fn+0x0/0x30
> >>    [<c0732a6d>] _raw_spin_lock_irqsave+0x1b/0x20
> >>    [<c0440b59>] __queue_work+0x12/0x2f
> >>    [<c0440b76>] ? delayed_work_timer_fn+0x0/0x30
> >>    [<c0440ba4>] delayed_work_timer_fn+0x2e/0x30
> >>
> >> I'm new to hacking on this driver..but would love to test
> >> patches, and if someone wants to suggest a good point in
> >> the code to remove the virtual phys, I'll make the attempt.
> >
> > Can you please try this patch?
> 
> It still crashes for me, and backtraces look similar.
> 
> Were you able to reproduce the crash?

with my patch, no. Can you please give the steps to trigger
this crash?

Vasanth 

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: ath9k doesn't clean up virtual wifis on rmmod, and crashes.
  2010-07-04  9:35     ` Vasanthakumar Thiagarajan
@ 2010-07-04 15:59       ` Ben Greear
  2010-07-05 18:57         ` Ben Greear
  0 siblings, 1 reply; 9+ messages in thread
From: Ben Greear @ 2010-07-04 15:59 UTC (permalink / raw)
  To: Vasanthakumar Thiagarajan
  Cc: Vasanth Thiagarajan, linux-wireless@vger.kernel.org

On 07/04/2010 02:35 AM, Vasanthakumar Thiagarajan wrote:
> On Sat, Jul 03, 2010 at 10:04:09PM +0530, Ben Greear wrote:
>> On 07/03/2010 12:02 AM, Vasanthakumar Thiagarajan wrote:
>>> On Sat, Jul 03, 2010 at 11:56:14AM +0530, Ben Greear wrote:
>>>> It seems to me that in 2.6.34, there is no code to clean up
>>>> virtual wiphys in ath9k on rmmod.  Also, ath9k mailing list
>>>> is returning error about mis-configured DNS server.
>>>>
>>>> This is with un-modified ath9k driver and is repeatable
>>>> every time on my system (crash is often different, but
>>>> it always crashes very quickly).
>>>>
>>>> [root@atom ~]# echo add=5>   /debug/ath9k/phy1/wiphy
>>>> -bash: /debug/ath9k/phy1/wiphy: No such file or directory
>>>> [root@atom ~]# echo add=5>   /debug/ath9k/phy0/wiphy
>>>> Jul  2 23:22:19 atom kernel: phy1: Selected rate control algorithm 'ath9k_rate_control'
>>>> [root@atom ~]# Jul  2 23:22:19 atom kernel: ADDRCONF(NETDEV_UP): wlan1: link is not ready
>>>> rmmod ath9k
>>>> Jul  2 23:22:24 atom kernel: ath9k 0000:05:00.0: PCI INT A disabled
>>>> Jul  2 23:22:24 atom kernel: ath9k: Driver unloaded
>>>> [root@atom ~]# BUG: spinlock bad magic on CPU#1, iw/2877
>>>>     lock: f8a476c0, .magic: 00000000, .owner:<none>/-1, .owner_cpu: 0
>>>> Pid: 2877, comm: iw Not tainted 2.6.34 #7
>>>> Call Trace:
>>>>     [<c0730e34>] ? printk+0xf/0x13
>>>>     [<c05710d6>] spin_bug+0x7b/0x86
>>>>     [<c0440b76>] ? delayed_work_timer_fn+0x0/0x30
>>>>     [<c0571171>] do_raw_spin_lock+0x1e/0x125
>>>>     [<c042f91e>] ? scheduler_tick+0xd6/0x1c9
>>>>     [<c0440b76>] ? delayed_work_timer_fn+0x0/0x30
>>>>     [<c0732a6d>] _raw_spin_lock_irqsave+0x1b/0x20
>>>>     [<c0440b59>] __queue_work+0x12/0x2f
>>>>     [<c0440b76>] ? delayed_work_timer_fn+0x0/0x30
>>>>     [<c0440ba4>] delayed_work_timer_fn+0x2e/0x30
>>>>
>>>> I'm new to hacking on this driver..but would love to test
>>>> patches, and if someone wants to suggest a good point in
>>>> the code to remove the virtual phys, I'll make the attempt.
>>>
>>> Can you please try this patch?
>>
>> It still crashes for me, and backtraces look similar.
>>
>> Were you able to reproduce the crash?
>
> with my patch, no. Can you please give the steps to trigger
> this crash?

It happens every time if I:

echo add >   /debug/ath9k/phy0/wiphy
rmmod ath9k

I notice the patch applied with offsets.  What kernel/driver
version are you testing?  I tried .34 kernel as well as the top-of-tree
2.6.35-rcX.

Thanks,
Ben

-- 
Ben Greear <greearb@candelatech.com>
Candela Technologies Inc  http://www.candelatech.com

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: ath9k doesn't clean up virtual wifis on rmmod, and crashes.
  2010-07-04 15:59       ` Ben Greear
@ 2010-07-05 18:57         ` Ben Greear
  2010-07-06  8:36           ` Rajkumar Manoharan
  0 siblings, 1 reply; 9+ messages in thread
From: Ben Greear @ 2010-07-05 18:57 UTC (permalink / raw)
  To: Vasanthakumar Thiagarajan
  Cc: Vasanth Thiagarajan, linux-wireless@vger.kernel.org

I ran the same test on wireless-testing, and it still crashes.

It appears that the patch you sent is already in wireless-testing,
so I did not apply it.

[root@atom ~]# uname -a
Linux atom 2.6.35-rc3-wl+ #1 SMP Mon Jul 5 11:36:08 PDT 2010 i686 i686 i386 GNU/Linux
[root@atom ~]# echo add > /debug/ath9k/phy0/wiphy
Jul  5 11:54:59 atom kernel: phy1: Selected rate control algorithm 'ath9k_rate_control'
[root@atom ~]# rmmod ath9k
BUG: unable to handle kernel NULL pointer dereference at 000000a4
IP: [<f8d455d6>] ath9k_hw_intrpend+0x6/0x49 [ath9k_hw]
*pde = 00000000
Oops: 0000 [#1] SMP
last sysfs file: /sys/devices/pci0000:00/0000:00:1e.0/0000:05:00.0/net/wlan1/flags
Modules linked in: xt_CT iptable_raw ipt_addrtype xt_DSCP xt_dscp xt_string xt_owner xt_NFQUEUE xt_mul]

Pid: 5817, comm: rmmod Not tainted 2.6.35-rc3-wl+ #1 To be filled by O.E.M./To Be Filled By O.E.M.
EIP: 0060:[<f8d455d6>] EFLAGS: 00010046 CPU: 0
EIP is at ath9k_hw_intrpend+0x6/0x49 [ath9k_hw]
EAX: 00000000 EBX: 00000000 ECX: c08de3bc EDX: f705ec78
ESI: f705ec78 EDI: 00000010 EBP: f4563e70 ESP: f4563e6c
  DS: 007b ES: 007b FS: 00d8 GS: 0033 SS: 0068
Process rmmod (pid: 5817, ti=f4562000 task=f4504550 task.ti=f4562000)
Stack:
  00000000 f4563e88 f8de3cb4 00000010 f6aab6c0 00000282 00000010 f4563ea8
<0> c046d228 f705ec78 00000282 c08de3bc 00000010 c08de380 f705ec78 f4563ebc
<0> c046d28f f705ec78 f7113000 f8f00000 f4563ed0 f8dea27f f7113000 f8def9a8
Call Trace:
  [<f8de3cb4>] ? ath_isr+0x25/0x189 [ath9k]
  [<c046d228>] ? __free_irq+0x11e/0x15e
  [<c046d28f>] ? free_irq+0x27/0x3a
  [<f8dea27f>] ? ath_pci_remove+0x2f/0x54 [ath9k]
  [<c05816da>] ? pci_device_remove+0x19/0x39
  [<c06036d6>] ? __device_release_driver+0x59/0x9d
  [<c0603781>] ? driver_detach+0x67/0x85
  [<c0602c9d>] ? bus_remove_driver+0x69/0x85
  [<c0603b92>] ? driver_unregister+0x4b/0x52
  [<c05818a9>] ? pci_unregister_driver+0x2d/0x6e
  [<f8dea171>] ? ath_pci_exit+0xd/0xf [ath9k]
  [<f8dec664>] ? ath9k_exit+0x8/0x2f [ath9k]
  [<c0455232>] ? sys_delete_module+0x16f/0x1c0
  [<c07458dc>] ? do_page_fault+0x26a/0x2c5
  [<c074590a>] ? do_page_fault+0x298/0x2c5
  [<c0402fdc>] ? sysenter_do_call+0x12/0x28
Code: 80 4b 06 10 31 c9 83 c4 68 89 c8 5b 5e 5f 5d c3 55 b9 0c 00 00 00 89 e5 53 8b 98 94 00 00 00 ff
EIP: [<f8d455d6>] ath9k_hw_intrpend+0x6/0x49 [ath9k_hw] SS:ESP 0068:f4563e6c
CR2: 00000000000000a4
---[ end trace 43bc6f57caff1689 ]---
Killed
Jul  5 1


-- 
Ben Greear <greearb@candelatech.com>
Candela Technologies Inc  http://www.candelatech.com

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: ath9k doesn't clean up virtual wifis on rmmod, and crashes.
  2010-07-05 18:57         ` Ben Greear
@ 2010-07-06  8:36           ` Rajkumar Manoharan
  2010-07-06 12:05             ` Ben Greear
  0 siblings, 1 reply; 9+ messages in thread
From: Rajkumar Manoharan @ 2010-07-06  8:36 UTC (permalink / raw)
  To: Ben Greear; +Cc: Vasanth Thiagarajan, linux-wireless@vger.kernel.org

On Tue, Jul 06, 2010 at 12:27:42AM +0530, Ben Greear wrote:
> I ran the same test on wireless-testing, and it still crashes.
> 
> It appears that the patch you sent is already in wireless-testing,
> so I did not apply it.
> 
> [root@atom ~]# uname -a
> Linux atom 2.6.35-rc3-wl+ #1 SMP Mon Jul 5 11:36:08 PDT 2010 i686 i686 i386 GNU/Linux
> [root@atom ~]# echo add > /debug/ath9k/phy0/wiphy
> Jul  5 11:54:59 atom kernel: phy1: Selected rate control algorithm 'ath9k_rate_control'
> [root@atom ~]# rmmod ath9k
> BUG: unable to handle kernel NULL pointer dereference at 000000a4
> IP: [<f8d455d6>] ath9k_hw_intrpend+0x6/0x49 [ath9k_hw]
> *pde = 00000000
> Oops: 0000 [#1] SMP
> last sysfs file: /sys/devices/pci0000:00/0000:00:1e.0/0000:05:00.0/net/wlan1/flags
> Modules linked in: xt_CT iptable_raw ipt_addrtype xt_DSCP xt_dscp xt_string xt_owner xt_NFQUEUE xt_mul]
> 
> Pid: 5817, comm: rmmod Not tainted 2.6.35-rc3-wl+ #1 To be filled by O.E.M./To Be Filled By O.E.M.
> EIP: 0060:[<f8d455d6>] EFLAGS: 00010046 CPU: 0
> EIP is at ath9k_hw_intrpend+0x6/0x49 [ath9k_hw]
> EAX: 00000000 EBX: 00000000 ECX: c08de3bc EDX: f705ec78
> ESI: f705ec78 EDI: 00000010 EBP: f4563e70 ESP: f4563e6c
>   DS: 007b ES: 007b FS: 00d8 GS: 0033 SS: 0068
> Process rmmod (pid: 5817, ti=f4562000 task=f4504550 task.ti=f4562000)
> Stack:
>   00000000 f4563e88 f8de3cb4 00000010 f6aab6c0 00000282 00000010 f4563ea8
> <0> c046d228 f705ec78 00000282 c08de3bc 00000010 c08de380 f705ec78 f4563ebc
> <0> c046d28f f705ec78 f7113000 f8f00000 f4563ed0 f8dea27f f7113000 f8def9a8
> Call Trace:
>   [<f8de3cb4>] ? ath_isr+0x25/0x189 [ath9k]
>   [<c046d228>] ? __free_irq+0x11e/0x15e
>   [<c046d28f>] ? free_irq+0x27/0x3a
>   [<f8dea27f>] ? ath_pci_remove+0x2f/0x54 [ath9k]
>   [<c05816da>] ? pci_device_remove+0x19/0x39
>   [<c06036d6>] ? __device_release_driver+0x59/0x9d
>   [<c0603781>] ? driver_detach+0x67/0x85
>   [<c0602c9d>] ? bus_remove_driver+0x69/0x85
>   [<c0603b92>] ? driver_unregister+0x4b/0x52
>   [<c05818a9>] ? pci_unregister_driver+0x2d/0x6e
>   [<f8dea171>] ? ath_pci_exit+0xd/0xf [ath9k]
>   [<f8dec664>] ? ath9k_exit+0x8/0x2f [ath9k]
>   [<c0455232>] ? sys_delete_module+0x16f/0x1c0
>   [<c07458dc>] ? do_page_fault+0x26a/0x2c5
>   [<c074590a>] ? do_page_fault+0x298/0x2c5
>   [<c0402fdc>] ? sysenter_do_call+0x12/0x28
> Code: 80 4b 06 10 31 c9 83 c4 68 89 c8 5b 5e 5f 5d c3 55 b9 0c 00 00 00 89 e5 53 8b 98 94 00 00 00 ff
> EIP: [<f8d455d6>] ath9k_hw_intrpend+0x6/0x49 [ath9k_hw] SS:ESP 0068:f4563e6c
> CR2: 00000000000000a4
> ---[ end trace 43bc6f57caff1689 ]---
> Killed

Can you please try this patch?

diff --git a/drivers/net/wireless/ath/ath9k/init.c b/drivers/net/wireless/ath/ath9k/init.c
index fe730cb..243c177 100644
--- a/drivers/net/wireless/ath/ath9k/init.c
+++ b/drivers/net/wireless/ath/ath9k/init.c
@@ -787,12 +787,12 @@ void ath9k_deinit_device(struct ath_softc *sc)
 		ieee80211_unregister_hw(aphy->hw);
 		ieee80211_free_hw(aphy->hw);
 	}
-	kfree(sc->sec_wiphy);
 
 	ieee80211_unregister_hw(hw);
 	ath_rx_cleanup(sc);
 	ath_tx_cleanup(sc);
 	ath9k_deinit_softc(sc);
+	kfree(sc->sec_wiphy);
 }
 
 void ath_descdma_cleanup(struct ath_softc *sc,
diff --git a/drivers/net/wireless/ath/ath9k/main.c b/drivers/net/wireless/ath/ath9k/main.c
index 4c0831f..a6b6af2 100644
--- a/drivers/net/wireless/ath/ath9k/main.c
+++ b/drivers/net/wireless/ath/ath9k/main.c
@@ -1264,6 +1264,7 @@ static void ath9k_stop(struct ieee80211_hw *hw)
 	struct ath_softc *sc = aphy->sc;
 	struct ath_hw *ah = sc->sc_ah;
 	struct ath_common *common = ath9k_hw_common(ah);
+	int i;
 
 	mutex_lock(&sc->mutex);
 
@@ -1276,11 +1277,15 @@ static void ath9k_stop(struct ieee80211_hw *hw)
 	cancel_work_sync(&sc->paprd_work);
 	cancel_work_sync(&sc->hw_check_work);
 
-	if (!sc->num_sec_wiphy) {
+	for (i = 0; i < sc->num_sec_wiphy; i++) {
+		if (sc->sec_wiphy[i])
+			break;
+	}
+
+	if (i == sc->num_sec_wiphy) {
 		cancel_delayed_work_sync(&sc->wiphy_work);
 		cancel_work_sync(&sc->chan_work);
 	}
-
 	if (sc->sc_flags & SC_OP_INVALID) {
 		ath_print(common, ATH_DBG_ANY, "Device not present\n");
 		mutex_unlock(&sc->mutex);

---
Rajkumar

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: ath9k doesn't clean up virtual wifis on rmmod, and crashes.
  2010-07-06  8:36           ` Rajkumar Manoharan
@ 2010-07-06 12:05             ` Ben Greear
  0 siblings, 0 replies; 9+ messages in thread
From: Ben Greear @ 2010-07-06 12:05 UTC (permalink / raw)
  To: Rajkumar Manoharan; +Cc: Vasanth Thiagarajan, linux-wireless@vger.kernel.org

On 07/06/2010 01:36 AM, Rajkumar Manoharan wrote:
> On Tue, Jul 06, 2010 at 12:27:42AM +0530, Ben Greear wrote:
>> I ran the same test on wireless-testing, and it still crashes.
>>
>> It appears that the patch you sent is already in wireless-testing,
>> so I did not apply it.

> Can you please try this patch?

That patch appears to fix the problem.  I was able to rmmod
ath9k after adding a virtual phy and no crashes.  It used to
immediately crash every time.

I'll do some more testing later today if all goes according to plan.

Thanks!
Ben

-- 
Ben Greear <greearb@candelatech.com>
Candela Technologies Inc  http://www.candelatech.com

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2010-07-06 12:05 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-07-03  6:26 ath9k doesn't clean up virtual wifis on rmmod, and crashes Ben Greear
2010-07-03  7:02 ` Vasanthakumar Thiagarajan
2010-07-03 16:34   ` Ben Greear
2010-07-03 17:57     ` Ben Greear
2010-07-04  9:35     ` Vasanthakumar Thiagarajan
2010-07-04 15:59       ` Ben Greear
2010-07-05 18:57         ` Ben Greear
2010-07-06  8:36           ` Rajkumar Manoharan
2010-07-06 12:05             ` Ben Greear

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).