[2.6.38-rc1] iwlagn lock misuse...

From: Daniel J Blueman
Date: Wed Jan 19 2011 - 04:44:09 EST


Booting an instrumented 2.6.38-rc1 kernel with an Intel WiFi Link 5300
card and associating with an access point, I see a lockdep warning
[attached].

This is essentially (struct iwl_priv)->lock being taken with
interrupts disabled in iwl-agn-ict.c:152 [1] and the same lock taken
with interrupts enabled in rx.c:2476 [2] (confirmed via disassembly).

It feels like this would have been introduced in this commit:
http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=6e8cc38d5b05bb812f89a35bd9bf52405e67d0df

Shall I raise a kernel.org bugzilla entry?

Thanks,
Daniel

--- [1] iwl-agn-ict.c:152

static irqreturn_t iwl_isr(int irq, void *data)
{
struct iwl_priv *priv = data;
u32 inta, inta_mask;
unsigned long flags;
#ifdef CONFIG_IWLWIFI_DEBUG
u32 inta_fh;
#endif
if (!priv)
return IRQ_NONE;

spin_lock_irqsave(&priv->lock, flags); <---

--- [2] rx.c:2476

static void ieee80211_rx_handlers(struct ieee80211_rx_data *rx)
{
ieee80211_rx_result res = RX_DROP_MONITOR;
struct sk_buff *skb;

#define CALL_RXH(rxh) \
do { \
res = rxh(rx); \
if (res != RX_CONTINUE) \
goto rxh_next; \
} while (0);

spin_lock(&rx->local->rx_skb_queue.lock); <---
--
Daniel J Blueman
[ 32.034539] ======================================================
[ 32.034544] [ INFO: HARDIRQ-safe -> HARDIRQ-unsafe lock order detected ]
[ 32.034547] 2.6.38-rc1-340cd+ #3
[ 32.034549] ------------------------------------------------------
[ 32.034553] dbus-daemon/490 [HC0[0]:SC1[1]:HE0:SE0] is trying to acquire:
[ 32.034557] (&(&list->lock)->rlock#4){+.-...}, at: [<ffffffff81562a46>] skb_queue_tail+0x26/0x60
[ 32.034568]
[ 32.034569] and this task is already holding:
[ 32.034572] (&(&priv->sta_lock)->rlock){..-...}, at: [<ffffffffa01f4a3c>] iwlagn_rx_reply_tx+0x14c/0xc20 [iwlagn]
[ 32.034586] which would create a new lock dependency:
[ 32.034589] (&(&priv->sta_lock)->rlock){..-...} -> (&(&list->lock)->rlock#4){+.-...}
[ 32.034599]
[ 32.034599] but this new dependency connects a HARDIRQ-irq-safe lock:
[ 32.034602] (&(&priv->lock)->rlock){-.-...}
[ 32.034606] ... which became HARDIRQ-irq-safe at:
[ 32.034608] [<ffffffff810a7644>] __lock_acquire+0xc74/0x1d10
[ 32.034616] [<ffffffff810a87a6>] lock_acquire+0xc6/0x280
[ 32.034621] [<ffffffff816d32eb>] _raw_spin_lock_irqsave+0x6b/0xb0
[ 32.034628] [<ffffffffa02008ff>] iwl_isr_ict+0x4bf/0x1510 [iwlagn]
[ 32.034638] [<ffffffff810db4bd>] handle_IRQ_event+0x7d/0x350
[ 32.034645] [<ffffffff810ddf86>] handle_edge_irq+0xb6/0x160
[ 32.034650] [<ffffffff81006824>] handle_irq+0x44/0x90
[ 32.034656] [<ffffffff810058d8>] do_IRQ+0x58/0xd0
[ 32.034661] [<ffffffff816d4613>] ret_from_intr+0x0/0x1a
[ 32.034666] [<ffffffff8136a0a8>] __udelay+0x28/0x30
[ 32.034672] [<ffffffffa00180c1>] sclhi+0x71/0x90 [i2c_algo_bit]
[ 32.034679] [<ffffffffa0018548>] bit_xfer+0x198/0x4c0 [i2c_algo_bit]
[ 32.034684] [<ffffffff814d31c9>] i2c_transfer+0xc9/0x110
[ 32.034691] [<ffffffffa00a4cca>] drm_do_probe_ddc_edid+0x4a/0x60 [drm]
[ 32.034704] [<ffffffffa00a4f0c>] drm_get_edid+0x8c/0x240 [drm]
[ 32.034715] [<ffffffffa0267fad>] radeon_modeset_init+0x4cd/0x8f0 [radeon]
[ 32.034737] [<ffffffffa02414c8>] radeon_driver_load_kms+0x108/0x180 [radeon]
[ 32.034752] [<ffffffffa009c032>] drm_get_pci_dev+0x192/0x2b0 [drm]
[ 32.034764] [<ffffffffa02d5a91>] radeon_pci_probe+0xaa/0x619 [radeon]
[ 32.034782] [<ffffffff8138753a>] local_pci_probe+0x5a/0xd0
[ 32.034787] [<ffffffff813886e9>] pci_device_probe+0x109/0x110
[ 32.034793] [<ffffffff8140f5c6>] driver_probe_device+0x96/0x1c0
[ 32.034799] [<ffffffff8140f78b>] __driver_attach+0x9b/0xa0
[ 32.034804] [<ffffffff8140ec68>] bus_for_each_dev+0x68/0x90
[ 32.034809] [<ffffffff8140f3e9>] driver_attach+0x19/0x20
[ 32.034814] [<ffffffff8140e4d8>] bus_add_driver+0x1b8/0x280
[ 32.034819] [<ffffffff8140fa98>] driver_register+0x78/0x140
[ 32.034824] [<ffffffff81388941>] __pci_register_driver+0x61/0xe0
[ 32.034830] [<ffffffffa009c21f>] drm_pci_init+0xcf/0xe0 [drm]
[ 32.034842] [<ffffffffa0093763>] drm_init+0x53/0x70 [drm]
[ 32.034852] [<ffffffffa03180c4>] 0xffffffffa03180c4
[ 32.034857] [<ffffffff810001de>] do_one_initcall+0x3e/0x1a0
[ 32.034862] [<ffffffff810b7e12>] sys_init_module+0xf2/0x250
[ 32.034868] [<ffffffff81003192>] system_call_fastpath+0x16/0x1b
[ 32.034874]
[ 32.034874] to a HARDIRQ-irq-unsafe lock:
[ 32.034877] (&(&list->lock)->rlock#4){+.-...}
[ 32.034881] ... which became HARDIRQ-irq-unsafe at:
[ 32.034884] ... [<ffffffff810a74ed>] __lock_acquire+0xb1d/0x1d10
[ 32.034890] [<ffffffff810a87a6>] lock_acquire+0xc6/0x280
[ 32.034896] [<ffffffff816d317b>] _raw_spin_lock+0x3b/0x70
[ 32.034901] [<ffffffffa0058686>] ieee80211_rx_handlers+0x36/0x1e80 [mac80211]
[ 32.034914] [<ffffffffa005a6e4>] ieee80211_prepare_and_rx_handle+0x214/0xa70 [mac80211]
[ 32.034926] [<ffffffffa005b3e7>] ieee80211_rx+0x3c7/0xbb0 [mac80211]
[ 32.034938] [<ffffffffa01eee68>] iwlagn_rx_reply_rx+0x428/0x670 [iwlagn]
[ 32.034948] [<ffffffffa01b9250>] iwl_rx_handle+0x160/0x710 [iwlagn]
[ 32.034956] [<ffffffffa01bb9e5>] iwl_irq_tasklet+0x525/0x1aa0 [iwlagn]
[ 32.034964] [<ffffffff8106e759>] tasklet_action+0x159/0x230
[ 32.034970] [<ffffffff8106f915>] __do_softirq+0xf5/0x420
[ 32.034975] [<ffffffff8100411c>] call_softirq+0x1c/0x30
[ 32.034980] [<ffffffff81006775>] do_softirq+0x85/0xf0
[ 32.034984] [<ffffffff8106f605>] irq_exit+0xa5/0xb0
[ 32.034989] [<ffffffff810058e1>] do_IRQ+0x61/0xd0
[ 32.034994] [<ffffffff816d4613>] ret_from_intr+0x0/0x1a
[ 32.034999]
[ 32.035000] other info that might help us debug this:
[ 32.035001]
[ 32.035004] 2 locks held by dbus-daemon/490:
[ 32.035006] #0: (&mm->mmap_sem){++++++}, at: [<ffffffff810334e3>] do_page_fault+0x113/0x510
[ 32.035016] #1: (&(&priv->sta_lock)->rlock){..-...}, at: [<ffffffffa01f4a3c>] iwlagn_rx_reply_tx+0x14c/0xc20 [iwlagn]
[ 32.035030]
[ 32.035031] the dependencies between HARDIRQ-irq-safe lock and the holding lock:
[ 32.035052] -> (&(&priv->lock)->rlock){-.-...} ops: 3571 {
[ 32.035060] IN-HARDIRQ-W at:
[ 32.035063] [<ffffffff810a7644>] __lock_acquire+0xc74/0x1d10
[ 32.035070] [<ffffffff810a87a6>] lock_acquire+0xc6/0x280
[ 32.035075] [<ffffffff816d32eb>] _raw_spin_lock_irqsave+0x6b/0xb0
[ 32.035082] [<ffffffffa02008ff>] iwl_isr_ict+0x4bf/0x1510 [iwlagn]
[ 32.035092] [<ffffffff810db4bd>] handle_IRQ_event+0x7d/0x350
[ 32.035099] [<ffffffff810ddf86>] handle_edge_irq+0xb6/0x160
[ 32.035104] [<ffffffff81006824>] handle_irq+0x44/0x90
[ 32.035110] [<ffffffff810058d8>] do_IRQ+0x58/0xd0
[ 32.035115] [<ffffffff816d4613>] ret_from_intr+0x0/0x1a
[ 32.035121] [<ffffffff8136a0a8>] __udelay+0x28/0x30
[ 32.035126] [<ffffffffa00180c1>] sclhi+0x71/0x90 [i2c_algo_bit]
[ 32.035133] [<ffffffffa0018548>] bit_xfer+0x198/0x4c0 [i2c_algo_bit]
[ 32.035139] [<ffffffff814d31c9>] i2c_transfer+0xc9/0x110
[ 32.035145] [<ffffffffa00a4cca>] drm_do_probe_ddc_edid+0x4a/0x60 [drm]
[ 32.035157] [<ffffffffa00a4f0c>] drm_get_edid+0x8c/0x240 [drm]
[ 32.035169] [<ffffffffa0267fad>] radeon_modeset_init+0x4cd/0x8f0 [radeon]
[ 32.035190] [<ffffffffa02414c8>] radeon_driver_load_kms+0x108/0x180 [radeon]
[ 32.035206] [<ffffffffa009c032>] drm_get_pci_dev+0x192/0x2b0 [drm]
[ 32.035219] [<ffffffffa02d5a91>] radeon_pci_probe+0xaa/0x619 [radeon]
[ 32.035237] [<ffffffff8138753a>] local_pci_probe+0x5a/0xd0
[ 32.035243] [<ffffffff813886e9>] pci_device_probe+0x109/0x110
[ 32.035249] [<ffffffff8140f5c6>] driver_probe_device+0x96/0x1c0
[ 32.035255] [<ffffffff8140f78b>] __driver_attach+0x9b/0xa0
[ 32.035261] [<ffffffff8140ec68>] bus_for_each_dev+0x68/0x90
[ 32.035267] [<ffffffff8140f3e9>] driver_attach+0x19/0x20
[ 32.035272] [<ffffffff8140e4d8>] bus_add_driver+0x1b8/0x280
[ 32.035278] [<ffffffff8140fa98>] driver_register+0x78/0x140
[ 32.035284] [<ffffffff81388941>] __pci_register_driver+0x61/0xe0
[ 32.035290] [<ffffffffa009c21f>] drm_pci_init+0xcf/0xe0 [drm]
[ 32.035303] [<ffffffffa0093763>] drm_init+0x53/0x70 [drm]
[ 32.035314] [<ffffffffa03180c4>] 0xffffffffa03180c4
[ 32.035319] [<ffffffff810001de>] do_one_initcall+0x3e/0x1a0
[ 32.035325] [<ffffffff810b7e12>] sys_init_module+0xf2/0x250
[ 32.035331] [<ffffffff81003192>] system_call_fastpath+0x16/0x1b
[ 32.035337] IN-SOFTIRQ-W at:
[ 32.035341] [<ffffffff810a74c8>] __lock_acquire+0xaf8/0x1d10
[ 32.035347] [<ffffffff810a87a6>] lock_acquire+0xc6/0x280
[ 32.035353] [<ffffffff816d32eb>] _raw_spin_lock_irqsave+0x6b/0xb0
[ 32.035359] [<ffffffffa01bb4e3>] iwl_irq_tasklet+0x23/0x1aa0 [iwlagn]
[ 32.035368] [<ffffffff8106e759>] tasklet_action+0x159/0x230
[ 32.035374] [<ffffffff8106f915>] __do_softirq+0xf5/0x420
[ 32.035380] [<ffffffff8100411c>] call_softirq+0x1c/0x30
[ 32.035385] [<ffffffff81006775>] do_softirq+0x85/0xf0
[ 32.035390] [<ffffffff8106f605>] irq_exit+0xa5/0xb0
[ 32.035396] [<ffffffff810058e1>] do_IRQ+0x61/0xd0
[ 32.035401] [<ffffffff816d4613>] ret_from_intr+0x0/0x1a
[ 32.035407] [<ffffffff8136a0a8>] __udelay+0x28/0x30
[ 32.035412] [<ffffffffa00180c1>] sclhi+0x71/0x90 [i2c_algo_bit]
[ 32.035419] [<ffffffffa0018548>] bit_xfer+0x198/0x4c0 [i2c_algo_bit]
[ 32.035425] [<ffffffff814d31c9>] i2c_transfer+0xc9/0x110
[ 32.035431] [<ffffffffa00a4cca>] drm_do_probe_ddc_edid+0x4a/0x60 [drm]
[ 32.035444] [<ffffffffa00a4f0c>] drm_get_edid+0x8c/0x240 [drm]
[ 32.035456] [<ffffffffa0267fad>] radeon_modeset_init+0x4cd/0x8f0 [radeon]
[ 32.035476] [<ffffffffa02414c8>] radeon_driver_load_kms+0x108/0x180 [radeon]
[ 32.035492] [<ffffffffa009c032>] drm_get_pci_dev+0x192/0x2b0 [drm]
[ 32.035505] [<ffffffffa02d5a91>] radeon_pci_probe+0xaa/0x619 [radeon]
[ 32.035523] [<ffffffff8138753a>] local_pci_probe+0x5a/0xd0
[ 32.035529] [<ffffffff813886e9>] pci_device_probe+0x109/0x110
[ 32.035535] [<ffffffff8140f5c6>] driver_probe_device+0x96/0x1c0
[ 32.035541] [<ffffffff8140f78b>] __driver_attach+0x9b/0xa0
[ 32.035547] [<ffffffff8140ec68>] bus_for_each_dev+0x68/0x90
[ 32.035553] [<ffffffff8140f3e9>] driver_attach+0x19/0x20
[ 32.035558] [<ffffffff8140e4d8>] bus_add_driver+0x1b8/0x280
[ 32.035564] [<ffffffff8140fa98>] driver_register+0x78/0x140
[ 32.035570] [<ffffffff81388941>] __pci_register_driver+0x61/0xe0
[ 32.035576] [<ffffffffa009c21f>] drm_pci_init+0xcf/0xe0 [drm]
[ 32.035589] [<ffffffffa0093763>] drm_init+0x53/0x70 [drm]
[ 32.035600] [<ffffffffa03180c4>] 0xffffffffa03180c4
[ 32.035605] [<ffffffff810001de>] do_one_initcall+0x3e/0x1a0
[ 32.035611] [<ffffffff810b7e12>] sys_init_module+0xf2/0x250
[ 32.035617] [<ffffffff81003192>] system_call_fastpath+0x16/0x1b
[ 32.035624] INITIAL USE at:
[ 32.035627] [<ffffffff810a6e3a>] __lock_acquire+0x46a/0x1d10
[ 32.035633] [<ffffffff810a87a6>] lock_acquire+0xc6/0x280
[ 32.035639] [<ffffffff816d32eb>] _raw_spin_lock_irqsave+0x6b/0xb0
[ 32.035645] [<ffffffffa01b37f9>] iwl_pci_probe+0xac9/0x1db0 [iwlagn]
[ 32.035654] [<ffffffff8138753a>] local_pci_probe+0x5a/0xd0
[ 32.035660] [<ffffffff813886e9>] pci_device_probe+0x109/0x110
[ 32.035665] [<ffffffff8140f5c6>] driver_probe_device+0x96/0x1c0
[ 32.035671] [<ffffffff8140f78b>] __driver_attach+0x9b/0xa0
[ 32.035677] [<ffffffff8140ec68>] bus_for_each_dev+0x68/0x90
[ 32.035683] [<ffffffff8140f3e9>] driver_attach+0x19/0x20
[ 32.035689] [<ffffffff8140e4d8>] bus_add_driver+0x1b8/0x280
[ 32.035695] [<ffffffff8140fa98>] driver_register+0x78/0x140
[ 32.035700] [<ffffffff81388941>] __pci_register_driver+0x61/0xe0
[ 32.035706] [<ffffffffa012b05c>] arc4_set_key+0x5c/0x90 [arc4]
[ 32.035712] [<ffffffff810001de>] do_one_initcall+0x3e/0x1a0
[ 32.035718] [<ffffffff810b7e12>] sys_init_module+0xf2/0x250
[ 32.035724] [<ffffffff81003192>] system_call_fastpath+0x16/0x1b
[ 32.035730] }
[ 32.035732] ... key at: [<ffffffffa021b25a>] __key.56621+0x0/0xfffffffffffecda6 [iwlagn]
[ 32.035741] ... acquired at:
[ 32.035743] [<ffffffff810a87a6>] lock_acquire+0xc6/0x280
[ 32.035748] [<ffffffff816d317b>] _raw_spin_lock+0x3b/0x70
[ 32.035754] [<ffffffffa01e43d9>] iwlagn_tx_skb+0x199/0x1570 [iwlagn]
[ 32.035763] [<ffffffffa01b7845>] iwlagn_mac_tx+0x125/0x1c0 [iwlagn]
[ 32.035771] [<ffffffffa005c767>] __ieee80211_tx+0x147/0x230 [mac80211]
[ 32.035784] [<ffffffffa005def6>] ieee80211_tx+0x106/0x300 [mac80211]
[ 32.035796] [<ffffffffa005e1d2>] ieee80211_xmit+0xe2/0x2e0 [mac80211]
[ 32.035807] [<ffffffffa005e41f>] ieee80211_tx_skb+0x4f/0x60 [mac80211]
[ 32.035820] [<ffffffffa0062136>] ieee80211_send_auth+0x176/0x1f0 [mac80211]
[ 32.035832] [<ffffffffa004f6e3>] ieee80211_work_work+0xac3/0x1570 [mac80211]
[ 32.035843] [<ffffffff810888d8>] process_one_work+0x1c8/0x6b0
[ 32.035849] [<ffffffff810891bd>] worker_thread+0x15d/0x3c0
[ 32.035854] [<ffffffff8108d456>] kthread+0xb6/0xc0
[ 32.035859] [<ffffffff81004024>] kernel_thread_helper+0x4/0x10
[ 32.035864]
[ 32.035866] -> (&(&priv->sta_lock)->rlock){..-...} ops: 37 {
[ 32.035874] IN-SOFTIRQ-W at:
[ 32.035877] [<ffffffff810a74c8>] __lock_acquire+0xaf8/0x1d10
[ 32.035883] [<ffffffff810a87a6>] lock_acquire+0xc6/0x280
[ 32.035889] [<ffffffff816d32eb>] _raw_spin_lock_irqsave+0x6b/0xb0
[ 32.035895] [<ffffffffa01f4a3c>] iwlagn_rx_reply_tx+0x14c/0xc20 [iwlagn]
[ 32.035905] [<ffffffffa01b9250>] iwl_rx_handle+0x160/0x710 [iwlagn]
[ 32.035915] [<ffffffffa01bb9e5>] iwl_irq_tasklet+0x525/0x1aa0 [iwlagn]
[ 32.035923] [<ffffffff8106e759>] tasklet_action+0x159/0x230
[ 32.035929] [<ffffffff8106f915>] __do_softirq+0xf5/0x420
[ 32.035935] [<ffffffff8100411c>] call_softirq+0x1c/0x30
[ 32.035940] [<ffffffff81006775>] do_softirq+0x85/0xf0
[ 32.035945] [<ffffffff8106f605>] irq_exit+0xa5/0xb0
[ 32.035951] [<ffffffff810058e1>] do_IRQ+0x61/0xd0
[ 32.035956] [<ffffffff816d4613>] ret_from_intr+0x0/0x1a
[ 32.035962] [<ffffffff81371b0f>] __debug_check_no_obj_freed+0x16f/0x200
[ 32.035968] [<ffffffff81371bb5>] debug_check_no_obj_freed+0x15/0x20
[ 32.035973] [<ffffffff81111f44>] free_pages_prepare+0x114/0x230
[ 32.035980] [<ffffffff81112282>] free_hot_cold_page+0x42/0x220
[ 32.035986] [<ffffffff81112495>] __free_pages+0x35/0x40
[ 32.035991] [<ffffffff811317f7>] __pte_alloc+0x127/0x1c0
[ 32.035997] [<ffffffff811319d6>] handle_mm_fault+0x146/0x300
[ 32.036003] [<ffffffff81033551>] do_page_fault+0x181/0x510
[ 32.036008] [<ffffffff816d4915>] page_fault+0x25/0x30
[ 32.036014] INITIAL USE at:
[ 32.036018] [<ffffffff810a6e3a>] __lock_acquire+0x46a/0x1d10
[ 32.036024] [<ffffffff810a87a6>] lock_acquire+0xc6/0x280
[ 32.036030] [<ffffffff816d32eb>] _raw_spin_lock_irqsave+0x6b/0xb0
[ 32.036036] [<ffffffffa01fc361>] iwlagn_alloc_bcast_station+0x31/0x120 [iwlagn]
[ 32.036047] [<ffffffffa01b0188>] __iwl_up+0x8e8/0x14a0 [iwlagn]
[ 32.036055] [<ffffffffa01b7977>] iwlagn_mac_start+0x97/0x2b0 [iwlagn]
[ 32.036064] [<ffffffffa0051d34>] ieee80211_do_open+0x354/0x6b0 [mac80211]
[ 32.036077] [<ffffffffa00520eb>] ieee80211_open+0x5b/0x80 [mac80211]
[ 32.036089] [<ffffffff81572797>] __dev_open+0xb7/0x100
[ 32.036096] [<ffffffff8156e8bc>] __dev_change_flags+0x9c/0x180
[ 32.036102] [<ffffffff81572693>] dev_change_flags+0x23/0x70
[ 32.036108] [<ffffffff81580ca2>] do_setlink+0x1f2/0x8c0
[ 32.036113] [<ffffffff81581462>] rtnl_setlink+0xf2/0x140
[ 32.036119] [<ffffffff81581d57>] rtnetlink_rcv_msg+0x177/0x2a0
[ 32.036125] [<ffffffff81598d21>] netlink_rcv_skb+0xa1/0xd0
[ 32.036131] [<ffffffff81581bd0>] rtnetlink_rcv+0x20/0x30
[ 32.036137] [<ffffffff8159896a>] netlink_unicast+0x2ba/0x300
[ 32.036142] [<ffffffff81599344>] netlink_sendmsg+0x274/0x3f0
[ 32.036148] [<ffffffff81559824>] sock_sendmsg+0xe4/0x110
[ 32.036154] [<ffffffff8155a863>] sys_sendmsg+0x253/0x3b0
[ 32.036159] [<ffffffff81003192>] system_call_fastpath+0x16/0x1b
[ 32.036165] }
[ 32.036167] ... key at: [<ffffffffa021b282>] __key.56503+0x0/0xfffffffffffecd7e [iwlagn]
[ 32.036176] ... acquired at:
[ 32.036178] [<ffffffff810a52b0>] check_irq_usage+0x60/0xf0
[ 32.036184] [<ffffffff810a7b53>] __lock_acquire+0x1183/0x1d10
[ 32.036189] [<ffffffff810a87a6>] lock_acquire+0xc6/0x280
[ 32.036194] [<ffffffff816d32eb>] _raw_spin_lock_irqsave+0x6b/0xb0
[ 32.036200] [<ffffffff81562a46>] skb_queue_tail+0x26/0x60
[ 32.036204] [<ffffffffa00413d8>] ieee80211_tx_status_irqsafe+0x38/0xa0 [mac80211]
[ 32.036214] [<ffffffffa01d9278>] iwlagn_tx_queue_reclaim+0xc8/0x240 [iwlagn]
[ 32.036223] [<ffffffffa01f525e>] iwlagn_rx_reply_tx+0x96e/0xc20 [iwlagn]
[ 32.036233] [<ffffffffa01b9250>] iwl_rx_handle+0x160/0x710 [iwlagn]
[ 32.036242] [<ffffffffa01bb9e5>] iwl_irq_tasklet+0x525/0x1aa0 [iwlagn]
[ 32.036250] [<ffffffff8106e759>] tasklet_action+0x159/0x230
[ 32.036255] [<ffffffff8106f915>] __do_softirq+0xf5/0x420
[ 32.036261] [<ffffffff8100411c>] call_softirq+0x1c/0x30
[ 32.036265] [<ffffffff81006775>] do_softirq+0x85/0xf0
[ 32.036270] [<ffffffff8106f605>] irq_exit+0xa5/0xb0
[ 32.036275] [<ffffffff810058e1>] do_IRQ+0x61/0xd0
[ 32.036279] [<ffffffff816d4613>] ret_from_intr+0x0/0x1a
[ 32.036284] [<ffffffff81371b0f>] __debug_check_no_obj_freed+0x16f/0x200
[ 32.036289] [<ffffffff81371bb5>] debug_check_no_obj_freed+0x15/0x20
[ 32.036294] [<ffffffff81111f44>] free_pages_prepare+0x114/0x230
[ 32.036300] [<ffffffff81112282>] free_hot_cold_page+0x42/0x220
[ 32.036305] [<ffffffff81112495>] __free_pages+0x35/0x40
[ 32.036310] [<ffffffff811317f7>] __pte_alloc+0x127/0x1c0
[ 32.036315] [<ffffffff811319d6>] handle_mm_fault+0x146/0x300
[ 32.036320] [<ffffffff81033551>] do_page_fault+0x181/0x510
[ 32.036325] [<ffffffff816d4915>] page_fault+0x25/0x30
[ 32.036330]
[ 32.036332]
[ 32.036332] the dependencies between the lock to be acquired and HARDIRQ-irq-unsafe lock:
[ 32.036354] -> (&(&list->lock)->rlock#4){+.-...} ops: 2437 {
[ 32.036363] HARDIRQ-ON-W at:
[ 32.036366] [<ffffffff810a74ed>] __lock_acquire+0xb1d/0x1d10
[ 32.036372] [<ffffffff810a87a6>] lock_acquire+0xc6/0x280
[ 32.036378] [<ffffffff816d317b>] _raw_spin_lock+0x3b/0x70
[ 32.036384] [<ffffffffa0058686>] ieee80211_rx_handlers+0x36/0x1e80 [mac80211]
[ 32.036397] [<ffffffffa005a6e4>] ieee80211_prepare_and_rx_handle+0x214/0xa70 [mac80211]
[ 32.036410] [<ffffffffa005b3e7>] ieee80211_rx+0x3c7/0xbb0 [mac80211]
[ 32.036422] [<ffffffffa01eee68>] iwlagn_rx_reply_rx+0x428/0x670 [iwlagn]
[ 32.036433] [<ffffffffa01b9250>] iwl_rx_handle+0x160/0x710 [iwlagn]
[ 32.036442] [<ffffffffa01bb9e5>] iwl_irq_tasklet+0x525/0x1aa0 [iwlagn]
[ 32.036451] [<ffffffff8106e759>] tasklet_action+0x159/0x230
[ 32.036457] [<ffffffff8106f915>] __do_softirq+0xf5/0x420
[ 32.036462] [<ffffffff8100411c>] call_softirq+0x1c/0x30
[ 32.036468] [<ffffffff81006775>] do_softirq+0x85/0xf0
[ 32.036473] [<ffffffff8106f605>] irq_exit+0xa5/0xb0
[ 32.036479] [<ffffffff810058e1>] do_IRQ+0x61/0xd0
[ 32.036484] [<ffffffff816d4613>] ret_from_intr+0x0/0x1a
[ 32.036490] IN-SOFTIRQ-W at:
[ 32.036493] [<ffffffff810a74c8>] __lock_acquire+0xaf8/0x1d10
[ 32.036499] [<ffffffff810a87a6>] lock_acquire+0xc6/0x280
[ 32.036505] [<ffffffff816d32eb>] _raw_spin_lock_irqsave+0x6b/0xb0
[ 32.036511] [<ffffffff81562a46>] skb_queue_tail+0x26/0x60
[ 32.036516] [<ffffffffa005a6dc>] ieee80211_prepare_and_rx_handle+0x20c/0xa70 [mac80211]
[ 32.036529] [<ffffffffa005b3e7>] ieee80211_rx+0x3c7/0xbb0 [mac80211]
[ 32.036542] [<ffffffffa01eee68>] iwlagn_rx_reply_rx+0x428/0x670 [iwlagn]
[ 32.036552] [<ffffffffa01b9250>] iwl_rx_handle+0x160/0x710 [iwlagn]
[ 32.036561] [<ffffffffa01bb9e5>] iwl_irq_tasklet+0x525/0x1aa0 [iwlagn]
[ 32.036570] [<ffffffff8106e759>] tasklet_action+0x159/0x230
[ 32.036576] [<ffffffff8106f915>] __do_softirq+0xf5/0x420
[ 32.036582] [<ffffffff8100411c>] call_softirq+0x1c/0x30
[ 32.036587] [<ffffffff81006775>] do_softirq+0x85/0xf0
[ 32.036593] [<ffffffff8106f605>] irq_exit+0xa5/0xb0
[ 32.036598] [<ffffffff810058e1>] do_IRQ+0x61/0xd0
[ 32.036603] [<ffffffff816d4613>] ret_from_intr+0x0/0x1a
[ 32.036609] INITIAL USE at:
[ 32.036613] [<ffffffff810a6e3a>] __lock_acquire+0x46a/0x1d10
[ 32.036619] [<ffffffff810a87a6>] lock_acquire+0xc6/0x280
[ 32.036625] [<ffffffff816d32eb>] _raw_spin_lock_irqsave+0x6b/0xb0
[ 32.036631] [<ffffffff81562a46>] skb_queue_tail+0x26/0x60
[ 32.036636] [<ffffffffa005a6dc>] ieee80211_prepare_and_rx_handle+0x20c/0xa70 [mac80211]
[ 32.036649] [<ffffffffa005b3e7>] ieee80211_rx+0x3c7/0xbb0 [mac80211]
[ 32.036661] [<ffffffffa01eee68>] iwlagn_rx_reply_rx+0x428/0x670 [iwlagn]
[ 32.036672] [<ffffffffa01b9250>] iwl_rx_handle+0x160/0x710 [iwlagn]
[ 32.036681] [<ffffffffa01bb9e5>] iwl_irq_tasklet+0x525/0x1aa0 [iwlagn]
[ 32.036690] [<ffffffff8106e759>] tasklet_action+0x159/0x230
[ 32.036696] [<ffffffff8106f915>] __do_softirq+0xf5/0x420
[ 32.036702] [<ffffffff8100411c>] call_softirq+0x1c/0x30
[ 32.036707] [<ffffffff81006775>] do_softirq+0x85/0xf0
[ 32.036712] [<ffffffff8106f605>] irq_exit+0xa5/0xb0
[ 32.036718] [<ffffffff810058e1>] do_IRQ+0x61/0xd0
[ 32.036723] [<ffffffff816d4613>] ret_from_intr+0x0/0x1a
[ 32.036729] }
[ 32.036731] ... key at: [<ffffffffa00706b2>] __key.26244+0x0/0xffffffffffffb94e [mac80211]
[ 32.036741] ... acquired at:
[ 32.036743] [<ffffffff810a52b0>] check_irq_usage+0x60/0xf0
[ 32.036748] [<ffffffff810a7b53>] __lock_acquire+0x1183/0x1d10
[ 32.036754] [<ffffffff810a87a6>] lock_acquire+0xc6/0x280
[ 32.036759] [<ffffffff816d32eb>] _raw_spin_lock_irqsave+0x6b/0xb0
[ 32.036764] [<ffffffff81562a46>] skb_queue_tail+0x26/0x60
[ 32.036769] [<ffffffffa00413d8>] ieee80211_tx_status_irqsafe+0x38/0xa0 [mac80211]
[ 32.036778] [<ffffffffa01d9278>] iwlagn_tx_queue_reclaim+0xc8/0x240 [iwlagn]
[ 32.036788] [<ffffffffa01f525e>] iwlagn_rx_reply_tx+0x96e/0xc20 [iwlagn]
[ 32.036798] [<ffffffffa01b9250>] iwl_rx_handle+0x160/0x710 [iwlagn]
[ 32.036806] [<ffffffffa01bb9e5>] iwl_irq_tasklet+0x525/0x1aa0 [iwlagn]
[ 32.036815] [<ffffffff8106e759>] tasklet_action+0x159/0x230
[ 32.036820] [<ffffffff8106f915>] __do_softirq+0xf5/0x420
[ 32.036825] [<ffffffff8100411c>] call_softirq+0x1c/0x30
[ 32.036829] [<ffffffff81006775>] do_softirq+0x85/0xf0
[ 32.036834] [<ffffffff8106f605>] irq_exit+0xa5/0xb0
[ 32.036839] [<ffffffff810058e1>] do_IRQ+0x61/0xd0
[ 32.036844] [<ffffffff816d4613>] ret_from_intr+0x0/0x1a
[ 32.036849] [<ffffffff81371b0f>] __debug_check_no_obj_freed+0x16f/0x200
[ 32.036854] [<ffffffff81371bb5>] debug_check_no_obj_freed+0x15/0x20
[ 32.036859] [<ffffffff81111f44>] free_pages_prepare+0x114/0x230
[ 32.036864] [<ffffffff81112282>] free_hot_cold_page+0x42/0x220
[ 32.036869] [<ffffffff81112495>] __free_pages+0x35/0x40
[ 32.036875] [<ffffffff811317f7>] __pte_alloc+0x127/0x1c0
[ 32.036880] [<ffffffff811319d6>] handle_mm_fault+0x146/0x300
[ 32.036885] [<ffffffff81033551>] do_page_fault+0x181/0x510
[ 32.036889] [<ffffffff816d4915>] page_fault+0x25/0x30
[ 32.036895]
[ 32.036896]
[ 32.036897] stack backtrace:
[ 32.036901] Pid: 490, comm: dbus-daemon Not tainted 2.6.38-rc1-340cd+ #3
[ 32.036904] Call Trace:
[ 32.036907] <IRQ> [<ffffffff810a51a8>] ? check_usage+0x4c8/0x570
[ 32.036919] [<ffffffff810a52b0>] ? check_irq_usage+0x60/0xf0
[ 32.036924] [<ffffffff810a7b53>] ? __lock_acquire+0x1183/0x1d10
[ 32.036929] [<ffffffff8100bdfc>] ? native_sched_clock+0x2c/0x80
[ 32.036936] [<ffffffff810a87a6>] ? lock_acquire+0xc6/0x280
[ 32.036940] [<ffffffff81562a46>] ? skb_queue_tail+0x26/0x60
[ 32.036945] [<ffffffff8100bdfc>] ? native_sched_clock+0x2c/0x80
[ 32.036950] [<ffffffff816d32eb>] ? _raw_spin_lock_irqsave+0x6b/0xb0
[ 32.036955] [<ffffffff81562a46>] ? skb_queue_tail+0x26/0x60
[ 32.036959] [<ffffffff81562a46>] ? skb_queue_tail+0x26/0x60
[ 32.036968] [<ffffffffa00413d8>] ? ieee80211_tx_status_irqsafe+0x38/0xa0 [mac80211]
[ 32.036978] [<ffffffffa01d9278>] ? iwlagn_tx_queue_reclaim+0xc8/0x240 [iwlagn]
[ 32.036987] [<ffffffffa01d930e>] ? iwlagn_tx_queue_reclaim+0x15e/0x240 [iwlagn]
[ 32.036996] [<ffffffffa01f4a3c>] ? iwlagn_rx_reply_tx+0x14c/0xc20 [iwlagn]
[ 32.037006] [<ffffffffa01f525e>] ? iwlagn_rx_reply_tx+0x96e/0xc20 [iwlagn]
[ 32.037012] [<ffffffff8137fb69>] ? debug_dma_unmap_page+0x59/0x60
[ 32.037021] [<ffffffffa01b9250>] ? iwl_rx_handle+0x160/0x710 [iwlagn]
[ 32.037027] [<ffffffff810a41f7>] ? trace_hardirqs_on_caller+0x67/0x1b0
[ 32.037035] [<ffffffffa01bb9e5>] ? iwl_irq_tasklet+0x525/0x1aa0 [iwlagn]
[ 32.037041] [<ffffffff810a3f97>] ? mark_held_locks+0x67/0x90
[ 32.037046] [<ffffffff8106e665>] ? tasklet_action+0x65/0x230
[ 32.037051] [<ffffffff8106e759>] ? tasklet_action+0x159/0x230
[ 32.037056] [<ffffffff8106f915>] ? __do_softirq+0xf5/0x420
[ 32.037061] [<ffffffff8100411c>] ? call_softirq+0x1c/0x30
[ 32.037065] [<ffffffff81006775>] ? do_softirq+0x85/0xf0
[ 32.037070] [<ffffffff8106f605>] ? irq_exit+0xa5/0xb0
[ 32.037075] [<ffffffff810058e1>] ? do_IRQ+0x61/0xd0
[ 32.037080] [<ffffffff816d4613>] ? ret_from_intr+0x0/0x1a
[ 32.037083] <EOI> [<ffffffff816d3f74>] ? _raw_spin_unlock_irqrestore+0x84/0xa0
[ 32.037092] [<ffffffff81371b0f>] ? __debug_check_no_obj_freed+0x16f/0x200
[ 32.037098] [<ffffffff810a42ed>] ? trace_hardirqs_on_caller+0x15d/0x1b0
[ 32.037103] [<ffffffff810a434d>] ? trace_hardirqs_on+0xd/0x10
[ 32.037108] [<ffffffff81371bb5>] ? debug_check_no_obj_freed+0x15/0x20
[ 32.037113] [<ffffffff81111f44>] ? free_pages_prepare+0x114/0x230
[ 32.037118] [<ffffffff81112282>] ? free_hot_cold_page+0x42/0x220
[ 32.037124] [<ffffffff81055ce1>] ? get_parent_ip+0x11/0x50
[ 32.037130] [<ffffffff81112495>] ? __free_pages+0x35/0x40
[ 32.037134] [<ffffffff811317f7>] ? __pte_alloc+0x127/0x1c0
[ 32.037139] [<ffffffff811319d6>] ? handle_mm_fault+0x146/0x300
[ 32.037144] [<ffffffff81033551>] ? do_page_fault+0x181/0x510
[ 32.037150] [<ffffffff8116dfdf>] ? fget_light+0x1df/0x3c0
[ 32.037156] [<ffffffff816d2f28>] ? trace_hardirqs_off_thunk+0x3a/0x3c
[ 32.037161] [<ffffffff816d4915>] ? page_fault+0x25/0x30