Search Linux Wireless

Re: BUG: scheduling while atomic: iwl3945/0/3680/0x00000002 during resume from suspend

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon 10-11-08 09:12:20, Zhu Yi wrote:
> On Mon, 2008-11-10 at 01:42 +0800, Jiri Slaby wrote:
> > I think the same as:
> > http://marc.info/?l=linux-wireless&m=122254514501379&w=2
> 
> Yup. Try this fix.
> http://git.kernel.org/?p=linux/kernel/git/linville/wireless-testing.git;a=commit;h=605b6cd038c5002f8dcbd3695aa934a130257af4

I have tried this patch (attached to be sure that we are talking about
the same one), but the problem is still here:

BUG: scheduling while atomic: iwl3945/0/3677/0x00000002
Modules linked in: aes_i586 aes_generic i915 drm fuse tun coretemp hwmon arc4 ecb snd_hda_intel snd_pcm snd_seq iwl3945 snd_timer mac80211 led_class snd_seq_device snd cfg80211 snd_page_alloc rtc_cmos rtc_core rtc_lib fujitsu_laptop backlight sky2
Pid: 3677, comm: iwl3945/0 Not tainted 2.6.28-rc3 #1
Call Trace:
 [<c0121b09>] __schedule_bug+0x48/0x4d
 [<c03f1747>] schedule+0xa1/0x8b4
 [<c012260d>] ? enqueue_task_fair+0x2fd/0x305
 [<c012200d>] ? check_preempt_wakeup+0x110/0x13e
 [<c03f38ca>] ? _spin_unlock_irqrestore+0x11/0x25
 [<c0123cb4>] ? try_to_wake_up+0x24a/0x255
 [<c03f20d5>] schedule_timeout+0x17/0xbc
 [<c011bdac>] ? __wake_up_common+0x35/0x5b
 [<c03f38ca>] ? _spin_unlock_irqrestore+0x11/0x25
 [<c03f159d>] wait_for_common+0xa8/0xfe
 [<c0123cbf>] ? default_wake_function+0x0/0xd
 [<c03f1665>] wait_for_completion+0x12/0x14
 [<c01363af>] synchronize_rcu+0x2d/0x33
 [<c01362c9>] ? wakeme_after_rcu+0x0/0xd
 [<f877a746>] __ieee80211_key_todo+0xe/0x1c1 [mac80211]
 [<c03f38ca>] ? _spin_unlock_irqrestore+0x11/0x25
 [<c03f371d>] ? _spin_lock_irqsave+0x14/0x2e
 [<c03f38ca>] ? _spin_unlock_irqrestore+0x11/0x25
 [<f876b921>] ? __sta_info_unlink+0xbf/0x163 [mac80211]
 [<f877a9d7>] ieee80211_key_todo+0x12/0x1e [mac80211]
 [<f876bf47>] sta_info_destroy+0x1e/0x9b [mac80211]
 [<f876b9f1>] ? sta_info_unlink+0x2c/0x31 [mac80211]
 [<f87703f1>] ieee80211_set_disassoc+0x1a2/0x1aa [mac80211]
 [<f87704d8>] ieee80211_sta_req_auth+0x3f/0x61 [mac80211]
 [<f8770533>] ieee80211_notify_mac+0x39/0x65 [mac80211]
 [<f88dac90>] iwl3945_bg_alive_start+0x545/0x5bc [iwl3945]
 [<c013500c>] run_workqueue+0x79/0x101
 [<f88da74b>] ? iwl3945_bg_alive_start+0x0/0x5bc [iwl3945]
 [<c013514b>] worker_thread+0xb7/0xc3
 [<c0138003>] ? autoremove_wake_function+0x0/0x33
 [<c0135094>] ? worker_thread+0x0/0xc3
 [<c0137ced>] kthread+0x3b/0x61
 [<c0137cb2>] ? kthread+0x0/0x61
 [<c010480b>] kernel_thread_helper+0x7/0x10

> 
> Thanks,
> -yi
> 

-- 
Michal Hocko
L3 team 
SUSE LINUX s.r.o.
Lihovarska 1060/12
190 00 Praha 9    
Czech Republic
From: Zhu, Yi <yi.zhu@xxxxxxxxx>
Date: Tue, 4 Nov 2008 20:21:36 +0000 (-0800)
Subject: iwl3945: fix deadlock on suspend
X-Git-Tag: master-2008-11-07~185
X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Flinville%2Fwireless-testing.git;a=commitdiff_plain;h=605b6cd038c5002f8dcbd3695aa934a130257af4

iwl3945: fix deadlock on suspend

This patch fixes iwl3945 deadlock during suspend by moving notify_mac out
of iwl3945 mutex. This is a portion of the same fix for iwlwifi by Tomas.

Signed-off-by: Zhu Yi <yi.zhu@xxxxxxxxx>
Signed-off-by: Tomas Winkler <tomas.winkler@xxxxxxxxx>
Signed-off-by: Reinette Chatre <reinette.chatre@xxxxxxxxx>
Signed-off-by: John W. Linville <linville@xxxxxxxxxxxxx>
---

diff --git a/drivers/net/wireless/iwlwifi/iwl3945-base.c b/drivers/net/wireless/iwlwifi/iwl3945-base.c
index 81dfcb8..285b53e 100644
--- a/drivers/net/wireless/iwlwifi/iwl3945-base.c
+++ b/drivers/net/wireless/iwlwifi/iwl3945-base.c
@@ -5768,7 +5768,6 @@ static void iwl3945_alive_start(struct iwl3945_priv *priv)
 	if (priv->error_recovering)
 		iwl3945_error_recovery(priv);
 
-	ieee80211_notify_mac(priv->hw, IEEE80211_NOTIFY_RE_ASSOC);
 	return;
 
  restart:
@@ -6013,6 +6012,7 @@ static void iwl3945_bg_alive_start(struct work_struct *data)
 	mutex_lock(&priv->mutex);
 	iwl3945_alive_start(priv);
 	mutex_unlock(&priv->mutex);
+	ieee80211_notify_mac(priv->hw, IEEE80211_NOTIFY_RE_ASSOC);
 }
 
 static void iwl3945_bg_rf_kill(struct work_struct *work)

[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]
  Powered by Linux