From mboxrd@z Thu Jan 1 00:00:00 1970 From: Eric Dumazet Subject: Re: latest net-next: iwlwifi: reproducible SOFTIRQ-unsafe lock order detected Date: Tue, 27 May 2014 11:01:12 -0700 Message-ID: <1401213672.5367.260.camel@edumazet-glaptop2.roam.corp.google.com> References: <538232C5.7000306@hartkopp.net> Mime-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit Cc: Linux Netdev List To: Oliver Hartkopp , Johannes Berg Return-path: Received: from mail-pb0-f41.google.com ([209.85.160.41]:44501 "EHLO mail-pb0-f41.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752008AbaE0SBN (ORCPT ); Tue, 27 May 2014 14:01:13 -0400 Received: by mail-pb0-f41.google.com with SMTP id uo5so9738421pbc.0 for ; Tue, 27 May 2014 11:01:13 -0700 (PDT) In-Reply-To: <538232C5.7000306@hartkopp.net> Sender: netdev-owner@vger.kernel.org List-ID: On Sun, 2014-05-25 at 20:13 +0200, Oliver Hartkopp wrote: > Hi all, > > with the latest net-next (3.15-rc6) I get a reproducible lock order splash. > > When using the latest 3.15-rc6 from Linus' it is fine. > > The '-dirty' from the version print is a small change in an unrelated CAN > driver (which was not even plugged-in / loaded that time). > > Any ideas? Patches are welcome :-) > > Regards, > Oliver > > --- > > > [ 15.918348] > [ 15.918354] ====================================================== > [ 15.918356] [ INFO: SOFTIRQ-safe -> SOFTIRQ-unsafe lock order detected ] > [ 15.918359] 3.15.0-rc6-nn-02649-g54e5c4d-dirty #3 Not tainted > [ 15.918360] ------------------------------------------------------ > [ 15.918363] wpa_supplicant/1690 [HC0[0]:SC0[2]:HE1:SE0] is trying to acquire: > [ 15.918365] (&(&priv->sta_lock)->rlock){+.....}, at: [] iwlagn_tx_skb+0x3ed/0xb40 [iwldvm] > [ 15.918380] > [ 15.918380] and this task is already holding: > [ 15.918382] (_xmit_ETHER#2){+.-...}, at: [] sch_direct_xmit+0x72/0x2d0 > [ 15.918390] which would create a new lock dependency: > [ 15.918391] (_xmit_ETHER#2){+.-...} -> (&(&priv->sta_lock)->rlock){+.....} > [ 15.918397] > [ 15.918397] but this new dependency connects a SOFTIRQ-irq-safe lock: > [ 15.918398] (_xmit_ETHER#2){+.-...} > [ 15.918398] ... which became SOFTIRQ-irq-safe at: > [ 15.918402] [] __lock_acquire+0x268/0x1890 > [ 15.918407] [] lock_acquire+0x8a/0x110 > [ 15.918409] [] _raw_spin_lock+0x3a/0x50 > [ 15.918414] [] sch_direct_xmit+0x72/0x2d0 > [ 15.918416] [] __dev_queue_xmit+0x1df/0x610 > [ 15.918421] [] dev_queue_xmit+0xa/0x10 > [ 15.918424] [] neigh_resolve_output+0x175/0x2a0 > [ 15.918428] [] ip6_finish_output2+0x164/0x870 > [ 15.918431] [] ip6_finish_output+0x7a/0x1b0 > [ 15.918434] [] ip6_output+0x40/0x230 > [ 15.918436] [] mld_sendpack+0x2b1/0x630 > [ 15.918441] [] mld_ifc_timer_expire+0x191/0x2c0 > [ 15.918444] [] call_timer_fn+0x70/0x160 > [ 15.918449] [] run_timer_softirq+0x172/0x240 > [ 15.918452] [] __do_softirq+0xf3/0x2a0 > [ 15.918455] [] do_softirq_own_stack+0x1d/0x30 > [ 15.918460] [] irq_exit+0xa5/0xb0 > [ 15.918463] [] smp_apic_timer_interrupt+0x35/0x50 > [ 15.918469] [] apic_timer_interrupt+0x32/0x38 > [ 15.918472] > [ 15.918472] to a SOFTIRQ-irq-unsafe lock: > [ 15.918474] (&(&txq->lock)->rlock){+.+...} > [ 15.918474] ... which became SOFTIRQ-irq-unsafe at: > [ 15.918477] ... [] __lock_acquire+0x2b3/0x1890 > [ 15.918480] [] lock_acquire+0x8a/0x110 > [ 15.918482] [] _raw_spin_lock+0x3a/0x50 > [ 15.918485] [] iwl_pcie_txq_check_wrptrs+0x52/0x90 [iwlwifi] > [ 15.918497] [] iwl_pcie_irq_handler+0xbbc/0x15c0 [iwlwifi] > [ 15.918503] [] irq_thread_fn+0x13/0x30 > [ 15.918508] [] irq_thread+0xee/0x120 > [ 15.918510] [] kthread+0x96/0xb0 > [ 15.918515] [] ret_from_kernel_thread+0x21/0x30 > [ 15.918518] > [ 15.918518] other info that might help us debug this: > [ 15.918518] > [ 15.918520] Chain exists of: > [ 15.918520] _xmit_ETHER#2 --> &(&priv->sta_lock)->rlock --> &(&txq->lock)->rlock > [ 15.918520] > [ 15.918525] Possible interrupt unsafe locking scenario: > [ 15.918525] > [ 15.918527] CPU0 CPU1 > [ 15.918529] ---- ---- > [ 15.918529] lock(&(&txq->lock)->rlock); > [ 15.918532] local_irq_disable(); > [ 15.918533] lock(_xmit_ETHER#2); > [ 15.918535] lock(&(&priv->sta_lock)->rlock); > [ 15.918537] > [ 15.918538] lock(_xmit_ETHER#2); > [ 15.918540] > [ 15.918540] *** DEADLOCK *** > [ 15.918540] > [ 15.918543] 3 locks held by wpa_supplicant/1690: > [ 15.918544] #0: (rcu_read_lock_bh){......}, at: [] __dev_queue_xmit+0x0/0x610 > [ 15.918550] #1: (_xmit_ETHER#2){+.-...}, at: [] sch_direct_xmit+0x72/0x2d0 > [ 15.918554] #2: (rcu_read_lock){......}, at: [] ieee80211_subif_start_xmit+0x29/0xbc0 [mac80211] > [ 15.918581] > [ 15.918581] the dependencies between SOFTIRQ-irq-safe lock and the holding lock: > [ 15.918597] -> (_xmit_ETHER#2){+.-...} ops: 7 { > [ 15.918602] HARDIRQ-ON-W at: > [ 15.918604] [] __lock_acquire+0x54f/0x1890 > [ 15.918607] [] lock_acquire+0x8a/0x110 > [ 15.918609] [] _raw_spin_lock+0x3a/0x50 > [ 15.918612] [] dev_deactivate_many+0xa8/0x200 > [ 15.918615] [] dev_deactivate+0x1f/0x30 > [ 15.918617] [] linkwatch_do_dev+0x27/0x50 > [ 15.918620] [] __linkwatch_run_queue+0x109/0x130 > [ 15.918623] [] linkwatch_event+0x1b/0x30 > [ 15.918626] [] process_one_work+0x187/0x490 > [ 15.918629] [] worker_thread+0xf9/0x330 > [ 15.918632] [] kthread+0x96/0xb0 > [ 15.918635] [] ret_from_kernel_thread+0x21/0x30 > [ 15.918638] IN-SOFTIRQ-W at: > [ 15.918639] [] __lock_acquire+0x268/0x1890 > [ 15.918642] [] lock_acquire+0x8a/0x110 > [ 15.918644] [] _raw_spin_lock+0x3a/0x50 > [ 15.918647] [] sch_direct_xmit+0x72/0x2d0 > [ 15.918649] [] __dev_queue_xmit+0x1df/0x610 > [ 15.918653] [] dev_queue_xmit+0xa/0x10 > [ 15.918656] [] neigh_resolve_output+0x175/0x2a0 > [ 15.918659] [] ip6_finish_output2+0x164/0x870 > [ 15.918661] [] ip6_finish_output+0x7a/0x1b0 > [ 15.918663] [] ip6_output+0x40/0x230 > [ 15.918665] [] mld_sendpack+0x2b1/0x630 > [ 15.918668] [] mld_ifc_timer_expire+0x191/0x2c0 > [ 15.918671] [] call_timer_fn+0x70/0x160 > [ 15.918674] [] run_timer_softirq+0x172/0x240 > [ 15.918677] [] __do_softirq+0xf3/0x2a0 > [ 15.918680] [] do_softirq_own_stack+0x1d/0x30 > [ 15.918683] [] irq_exit+0xa5/0xb0 > [ 15.918685] [] smp_apic_timer_interrupt+0x35/0x50 > [ 15.918688] [] apic_timer_interrupt+0x32/0x38 > [ 15.918691] INITIAL USE at: > [ 15.918693] [] __lock_acquire+0x307/0x1890 > [ 15.918695] [] lock_acquire+0x8a/0x110 > [ 15.918698] [] _raw_spin_lock+0x3a/0x50 > [ 15.918701] [] dev_deactivate_many+0xa8/0x200 > [ 15.918703] [] dev_deactivate+0x1f/0x30 > [ 15.918706] [] linkwatch_do_dev+0x27/0x50 > [ 15.918709] [] __linkwatch_run_queue+0x109/0x130 > [ 15.918712] [] linkwatch_event+0x1b/0x30 > [ 15.918715] [] process_one_work+0x187/0x490 > [ 15.918717] [] worker_thread+0xf9/0x330 > [ 15.918720] [] kthread+0x96/0xb0 > [ 15.918723] [] ret_from_kernel_thread+0x21/0x30 > [ 15.918725] } > [ 15.918727] ... key at: [] netdev_xmit_lock_key+0x8/0x1c8 > [ 15.918733] ... acquired at: > [ 15.918734] [] check_irq_usage+0x4e/0xc0 > [ 15.918736] [] __lock_acquire+0xd66/0x1890 > [ 15.918738] [] lock_acquire+0x8a/0x110 > [ 15.918740] [] _raw_spin_lock+0x3a/0x50 > [ 15.918742] [] iwlagn_tx_skb+0x3ed/0xb40 [iwldvm] > [ 15.918749] [] iwlagn_mac_tx+0x16/0x30 [iwldvm] > [ 15.918756] [] __ieee80211_tx+0x21e/0x310 [mac80211] > [ 15.918770] [] ieee80211_tx+0x9f/0xd0 [mac80211] > [ 15.918784] [] ieee80211_xmit+0x90/0xf0 [mac80211] > [ 15.918798] [] ieee80211_subif_start_xmit+0x5bf/0xbc0 [mac80211] > [ 15.918813] [] dev_hard_start_xmit+0x2c4/0x580 > [ 15.918817] [] sch_direct_xmit+0x92/0x2d0 > [ 15.918819] [] __dev_queue_xmit+0x1df/0x610 > [ 15.918822] [] dev_queue_xmit+0xa/0x10 > [ 15.918824] [] packet_sendmsg+0xa4b/0xcf0 > [ 15.918828] [] sock_sendmsg+0x69/0x90 > [ 15.918831] [] SYSC_sendto+0xdf/0x110 > [ 15.918834] [] SYSC_socketcall+0x3b4/0x990 > [ 15.918837] [] SyS_socketcall+0xe/0x10 > [ 15.918839] [] sysenter_do_call+0x12/0x36 > [ 15.918842] > [ 15.918844] > [ 15.918844] the dependencies between the lock to be acquired and SOFTIRQ-irq-unsafe lock: > [ 15.918858] -> (&(&txq->lock)->rlock){+.+...} ops: 180 { > [ 15.918862] HARDIRQ-ON-W at: > [ 15.918864] [] __lock_acquire+0x54f/0x1890 > [ 15.918866] [] lock_acquire+0x8a/0x110 > [ 15.918868] [] _raw_spin_lock_bh+0x40/0x50 > [ 15.918871] [] iwl_pcie_enqueue_hcmd+0xfb/0x960 [iwlwifi] > [ 15.918877] [] iwl_trans_pcie_send_hcmd+0xd9/0x5f0 [iwlwifi] > [ 15.918884] [] iwl_dvm_send_cmd+0x72/0x210 [iwldvm] > [ 15.918892] [] iwl_dvm_send_cmd_pdu+0x3a/0x50 [iwldvm] > [ 15.918898] [] iwl_load_ucode_wait_alive+0x201/0x3b0 [iwldvm] > [ 15.918903] [] iwl_run_init_ucode+0x74/0x120 [iwldvm] > [ 15.918909] [] iwlagn_mac_start+0xc0/0x250 [iwldvm] > [ 15.918914] [] ieee80211_do_open+0x2af/0xdd0 [mac80211] > [ 15.918928] [] ieee80211_open+0x4d/0x50 [mac80211] > [ 15.918942] [] __dev_open+0x83/0xf0 > [ 15.918946] [] __dev_change_flags+0x85/0x160 > [ 15.918948] [] dev_change_flags+0x23/0x60 > [ 15.918951] [] do_setlink+0x2cd/0x710 > [ 15.918954] [] rtnl_newlink+0x50a/0x6f0 > [ 15.918956] [] rtnetlink_rcv_msg+0x7f/0x1f0 > [ 15.918959] [] netlink_rcv_skb+0x96/0xb0 > [ 15.918963] [] rtnetlink_rcv+0x1e/0x30 > [ 15.918966] [] netlink_unicast+0xd8/0x190 > [ 15.918968] [] netlink_sendmsg+0x23a/0x6a0 > [ 15.918971] [] sock_sendmsg+0x69/0x90 > [ 15.918973] [] ___sys_sendmsg.part.18+0x25a/0x270 > [ 15.918976] [] __sys_sendmsg+0x3f/0x70 > [ 15.918978] [] SYSC_socketcall+0x16e/0x990 > [ 15.918981] [] SyS_socketcall+0xe/0x10 > [ 15.918983] [] sysenter_do_call+0x12/0x36 > [ 15.918985] SOFTIRQ-ON-W at: > [ 15.918987] [] __lock_acquire+0x2b3/0x1890 > [ 15.918990] [] lock_acquire+0x8a/0x110 > [ 15.918992] [] _raw_spin_lock+0x3a/0x50 > [ 15.918995] [] iwl_pcie_txq_check_wrptrs+0x52/0x90 [iwlwifi] > [ 15.919002] [] iwl_pcie_irq_handler+0xbbc/0x15c0 [iwlwifi] > [ 15.919008] [] irq_thread_fn+0x13/0x30 > [ 15.919011] [] irq_thread+0xee/0x120 > [ 15.919013] [] kthread+0x96/0xb0 > [ 15.919015] [] ret_from_kernel_thread+0x21/0x30 > [ 15.919018] INITIAL USE at: > [ 15.919019] [] __lock_acquire+0x307/0x1890 > [ 15.919021] [] lock_acquire+0x8a/0x110 > [ 15.919023] [] _raw_spin_lock_bh+0x40/0x50 > [ 15.919026] [] iwl_pcie_enqueue_hcmd+0xfb/0x960 [iwlwifi] > [ 15.919033] [] iwl_trans_pcie_send_hcmd+0xd9/0x5f0 [iwlwifi] > [ 15.919039] [] iwl_dvm_send_cmd+0x72/0x210 [iwldvm] > [ 15.919046] [] iwl_dvm_send_cmd_pdu+0x3a/0x50 [iwldvm] > [ 15.919053] [] iwl_load_ucode_wait_alive+0x201/0x3b0 [iwldvm] > [ 15.919059] [] iwl_run_init_ucode+0x74/0x120 [iwldvm] > [ 15.919064] [] iwlagn_mac_start+0xc0/0x250 [iwldvm] > [ 15.919070] [] ieee80211_do_open+0x2af/0xdd0 [mac80211] > [ 15.919083] [] ieee80211_open+0x4d/0x50 [mac80211] > [ 15.919096] [] __dev_open+0x83/0xf0 > [ 15.919099] [] __dev_change_flags+0x85/0x160 > [ 15.919102] [] dev_change_flags+0x23/0x60 > [ 15.919105] [] do_setlink+0x2cd/0x710 > [ 15.919108] [] rtnl_newlink+0x50a/0x6f0 > [ 15.919111] [] rtnetlink_rcv_msg+0x7f/0x1f0 > [ 15.919113] [] netlink_rcv_skb+0x96/0xb0 > [ 15.919116] [] rtnetlink_rcv+0x1e/0x30 > [ 15.919119] [] netlink_unicast+0xd8/0x190 > [ 15.919121] [] netlink_sendmsg+0x23a/0x6a0 > [ 15.919124] [] sock_sendmsg+0x69/0x90 > [ 15.919127] [] ___sys_sendmsg.part.18+0x25a/0x270 > [ 15.919129] [] __sys_sendmsg+0x3f/0x70 > [ 15.919132] [] SYSC_socketcall+0x16e/0x990 > [ 15.919134] [] SyS_socketcall+0xe/0x10 > [ 15.919136] [] sysenter_do_call+0x12/0x36 > [ 15.919139] } > [ 15.919140] ... key at: [] __key.46551+0x0/0xffff7538 [iwlwifi] > [ 15.919148] ... acquired at: > [ 15.919149] [] lock_acquire+0x8a/0x110 > [ 15.919152] [] _raw_spin_lock+0x3a/0x50 > [ 15.919155] [] iwl_trans_pcie_tx+0x58/0x6c0 [iwlwifi] > [ 15.919162] [] iwlagn_tx_skb+0x554/0xb40 [iwldvm] > [ 15.919168] [] iwlagn_mac_tx+0x16/0x30 [iwldvm] > [ 15.919173] [] __ieee80211_tx+0x21e/0x310 [mac80211] > [ 15.919187] [] ieee80211_tx+0x9f/0xd0 [mac80211] > [ 15.919200] [] ieee80211_xmit+0x90/0xf0 [mac80211] > [ 15.919210] [] __ieee80211_tx_skb_tid_band+0x61/0x80 [mac80211] > [ 15.919224] [] ieee80211_send_auth+0x166/0x210 [mac80211] > [ 15.919240] [] ieee80211_probe_auth+0x248/0x480 [mac80211] > [ 15.919260] [] ieee80211_mgd_auth+0x233/0x2a0 [mac80211] > [ 15.919277] [] ieee80211_auth+0x11/0x20 [mac80211] > [ 15.919291] [] cfg80211_mlme_auth+0xe7/0x1f0 [cfg80211] > [ 15.919316] [] nl80211_authenticate+0x25b/0x2c0 [cfg80211] > [ 15.919330] [] genl_rcv_msg+0x219/0x3b0 > [ 15.919333] [] netlink_rcv_skb+0x96/0xb0 > [ 15.919335] [] genl_rcv+0x1c/0x30 > [ 15.919338] [] netlink_unicast+0xd8/0x190 > [ 15.919340] [] netlink_sendmsg+0x23a/0x6a0 > [ 15.919343] [] sock_sendmsg+0x69/0x90 > [ 15.919345] [] ___sys_sendmsg.part.18+0x25a/0x270 > [ 15.919347] [] __sys_sendmsg+0x3f/0x70 > [ 15.919349] [] SYSC_socketcall+0x16e/0x990 > [ 15.919352] [] SyS_socketcall+0xe/0x10 > [ 15.919354] [] sysenter_do_call+0x12/0x36 > [ 15.919357] > [ 15.919359] -> (&(&priv->sta_lock)->rlock){+.....} ops: 83 { > [ 15.919363] HARDIRQ-ON-W at: > [ 15.919365] [] __lock_acquire+0x54f/0x1890 > [ 15.919368] [] lock_acquire+0x8a/0x110 > [ 15.919370] [] _raw_spin_lock_bh+0x40/0x50 > [ 15.919373] [] iwlagn_alloc_bcast_station+0x1a/0xf0 [iwldvm] > [ 15.919381] [] iwlagn_mac_start+0x9b/0x250 [iwldvm] > [ 15.919386] [] ieee80211_do_open+0x2af/0xdd0 [mac80211] > [ 15.919397] [] ieee80211_open+0x4d/0x50 [mac80211] > [ 15.919410] [] __dev_open+0x83/0xf0 > [ 15.919412] [] __dev_change_flags+0x85/0x160 > [ 15.919415] [] dev_change_flags+0x23/0x60 > [ 15.919418] [] do_setlink+0x2cd/0x710 > [ 15.919421] [] rtnl_newlink+0x50a/0x6f0 > [ 15.919423] [] rtnetlink_rcv_msg+0x7f/0x1f0 > [ 15.919425] [] netlink_rcv_skb+0x96/0xb0 > [ 15.919428] [] rtnetlink_rcv+0x1e/0x30 > [ 15.919431] [] netlink_unicast+0xd8/0x190 > [ 15.919433] [] netlink_sendmsg+0x23a/0x6a0 > [ 15.919436] [] sock_sendmsg+0x69/0x90 > [ 15.919438] [] ___sys_sendmsg.part.18+0x25a/0x270 > [ 15.919440] [] __sys_sendmsg+0x3f/0x70 > [ 15.919442] [] SYSC_socketcall+0x16e/0x990 > [ 15.919445] [] SyS_socketcall+0xe/0x10 > [ 15.919447] [] sysenter_do_call+0x12/0x36 > [ 15.919450] INITIAL USE at: > [ 15.919452] [] __lock_acquire+0x307/0x1890 > [ 15.919454] [] lock_acquire+0x8a/0x110 > [ 15.919456] [] _raw_spin_lock_bh+0x40/0x50 > [ 15.919459] [] iwlagn_alloc_bcast_station+0x1a/0xf0 [iwldvm] > [ 15.919466] [] iwlagn_mac_start+0x9b/0x250 [iwldvm] > [ 15.919471] [] ieee80211_do_open+0x2af/0xdd0 [mac80211] > [ 15.919484] [] ieee80211_open+0x4d/0x50 [mac80211] > [ 15.919495] [] __dev_open+0x83/0xf0 > [ 15.919498] [] __dev_change_flags+0x85/0x160 > [ 15.919501] [] dev_change_flags+0x23/0x60 > [ 15.919504] [] do_setlink+0x2cd/0x710 > [ 15.919506] [] rtnl_newlink+0x50a/0x6f0 > [ 15.919509] [] rtnetlink_rcv_msg+0x7f/0x1f0 > [ 15.919511] [] netlink_rcv_skb+0x96/0xb0 > [ 15.919514] [] rtnetlink_rcv+0x1e/0x30 > [ 15.919516] [] netlink_unicast+0xd8/0x190 > [ 15.919519] [] netlink_sendmsg+0x23a/0x6a0 > [ 15.919522] [] sock_sendmsg+0x69/0x90 > [ 15.919524] [] ___sys_sendmsg.part.18+0x25a/0x270 > [ 15.919526] [] __sys_sendmsg+0x3f/0x70 > [ 15.919528] [] SYSC_socketcall+0x16e/0x990 > [ 15.919531] [] SyS_socketcall+0xe/0x10 > [ 15.919533] [] sysenter_do_call+0x12/0x36 > [ 15.919536] } > [ 15.919537] ... key at: [] __key.46877+0x0/0xffff6cdc [iwldvm] > [ 15.919543] ... acquired at: > [ 15.919544] [] check_irq_usage+0x4e/0xc0 > [ 15.919546] [] __lock_acquire+0xd66/0x1890 > [ 15.919548] [] lock_acquire+0x8a/0x110 > [ 15.919551] [] _raw_spin_lock+0x3a/0x50 > [ 15.919553] [] iwlagn_tx_skb+0x3ed/0xb40 [iwldvm] > [ 15.919559] [] iwlagn_mac_tx+0x16/0x30 [iwldvm] > [ 15.919564] [] __ieee80211_tx+0x21e/0x310 [mac80211] > [ 15.919579] [] ieee80211_tx+0x9f/0xd0 [mac80211] > [ 15.919592] [] ieee80211_xmit+0x90/0xf0 [mac80211] > [ 15.919605] [] ieee80211_subif_start_xmit+0x5bf/0xbc0 [mac80211] > [ 15.919619] [] dev_hard_start_xmit+0x2c4/0x580 > [ 15.919622] [] sch_direct_xmit+0x92/0x2d0 > [ 15.919624] [] __dev_queue_xmit+0x1df/0x610 > [ 15.919627] [] dev_queue_xmit+0xa/0x10 > [ 15.919630] [] packet_sendmsg+0xa4b/0xcf0 > [ 15.919632] [] sock_sendmsg+0x69/0x90 > [ 15.919634] [] SYSC_sendto+0xdf/0x110 > [ 15.919636] [] SYSC_socketcall+0x3b4/0x990 > [ 15.919639] [] SyS_socketcall+0xe/0x10 > [ 15.919641] [] sysenter_do_call+0x12/0x36 > [ 15.919643] > [ 15.919645] > [ 15.919645] stack backtrace: > [ 15.919649] CPU: 1 PID: 1690 Comm: wpa_supplicant Not tainted 3.15.0-rc6-nn-02649-g54e5c4d-dirty #3 > [ 15.919651] Hardware name: Dell Inc. Latitude E6510/XXXXXX, BIOS A06 11/20/2010 > [ 15.919652] 00000000 00000000 ed82383c c14d4a0f c1a7fee0 ed8238cc c107e4d4 c1652abb > [ 15.919658] c1652dfc 0000069a 00000000 00000000 00000000 00000002 00000001 00000000 > [ 15.919663] ed823878 c1c74f50 ed823878 c1c74f50 c107c6f0 00000009 c1a7fee0 00000014 > [ 15.919669] Call Trace: > [ 15.919673] [] dump_stack+0x48/0x60 > [ 15.919676] [] check_usage+0x3f4/0x400 > [ 15.919681] [] ? noop_count+0x10/0x10 > [ 15.919684] [] ? find_usage_backwards+0x33/0x70 > [ 15.919688] [] ? __bfs+0xec/0x1d0 > [ 15.919691] [] check_irq_usage+0x4e/0xc0 > [ 15.919694] [] __lock_acquire+0xd66/0x1890 > [ 15.919697] [] ? mark_held_locks+0x5d/0x80 > [ 15.919702] [] ? kmem_cache_alloc+0x1a5/0x3f0 > [ 15.919705] [] lock_acquire+0x8a/0x110 > [ 15.919713] [] ? iwlagn_tx_skb+0x3ed/0xb40 [iwldvm] > [ 15.919716] [] _raw_spin_lock+0x3a/0x50 > [ 15.919723] [] ? iwlagn_tx_skb+0x3ed/0xb40 [iwldvm] > [ 15.919729] [] iwlagn_tx_skb+0x3ed/0xb40 [iwldvm] > [ 15.919732] [] ? mark_held_locks+0x5d/0x80 > [ 15.919738] [] iwlagn_mac_tx+0x16/0x30 [iwldvm] > [ 15.919752] [] __ieee80211_tx+0x21e/0x310 [mac80211] > [ 15.919767] [] ieee80211_tx+0x9f/0xd0 [mac80211] > [ 15.919782] [] ieee80211_xmit+0x90/0xf0 [mac80211] > [ 15.919797] [] ieee80211_subif_start_xmit+0x5bf/0xbc0 [mac80211] > [ 15.919813] [] ? ieee80211_subif_start_xmit+0x29/0xbc0 [mac80211] > [ 15.919819] [] dev_hard_start_xmit+0x2c4/0x580 > [ 15.919822] [] ? _raw_spin_lock+0x41/0x50 > [ 15.919825] [] sch_direct_xmit+0x92/0x2d0 > [ 15.919829] [] ? _raw_spin_lock+0x41/0x50 > [ 15.919832] [] __dev_queue_xmit+0x1df/0x610 > [ 15.919835] [] ? dev_hard_start_xmit+0x580/0x580 > [ 15.919848] [] ? ieee80211_netdev_select_queue+0xd/0x10 [mac80211] > [ 15.919851] [] dev_queue_xmit+0xa/0x10 > [ 15.919854] [] packet_sendmsg+0xa4b/0xcf0 > [ 15.919857] [] ? __lock_acquire+0x433/0x1890 > [ 15.919860] [] ? __lock_acquire+0x710/0x1890 > [ 15.919862] [] sock_sendmsg+0x69/0x90 > [ 15.919868] [] ? _copy_from_user+0x44/0x50 > [ 15.919870] [] ? move_addr_to_kernel+0x30/0x50 > [ 15.919872] [] SYSC_sendto+0xdf/0x110 > [ 15.919878] [] ? might_fault+0x49/0xa0 > [ 15.919881] [] ? might_fault+0x49/0xa0 > [ 15.919883] [] ? might_fault+0x8f/0xa0 > [ 15.919886] [] ? _copy_from_user+0x44/0x50 > [ 15.919889] [] SYSC_socketcall+0x3b4/0x990 > [ 15.919891] [] ? trace_hardirqs_on+0xb/0x10 > [ 15.919897] [] ? free_hot_cold_page_list+0x3a/0xa0 > [ 15.919900] [] ? release_pages+0x6f/0x1c0 > [ 15.919905] [] ? free_pages_and_swap_cache+0x92/0xb0 > [ 15.919908] [] ? tlb_flush_mmu_free+0x23/0x40 > [ 15.919910] [] ? mark_held_locks+0x5d/0x80 > [ 15.919914] [] ? kmem_cache_free+0xd5/0x100 > [ 15.919916] [] ? trace_hardirqs_on+0xb/0x10 > [ 15.919919] [] ? remove_vma+0x4a/0x50 > [ 15.919922] [] ? do_munmap+0x236/0x300 > [ 15.919924] [] ? sysenter_exit+0xf/0x4c > [ 15.919927] [] SyS_socketcall+0xe/0x10 > [ 15.919929] [] sysenter_do_call+0x12/0x36 Bug added in commit ea68f46070c7bae608c619ae048f0ad995db74c3 ("iwlwifi: pcie: clarify TX queue need_update handling") Please try : diff --git a/drivers/net/wireless/iwlwifi/pcie/tx.c b/drivers/net/wireless/iwlwifi/pcie/tx.c index dde6031f4257..309a13caddcd 100644 --- a/drivers/net/wireless/iwlwifi/pcie/tx.c +++ b/drivers/net/wireless/iwlwifi/pcie/tx.c @@ -338,12 +338,12 @@ void iwl_pcie_txq_check_wrptrs(struct iwl_trans *trans) for (i = 0; i < trans->cfg->base_params->num_of_queues; i++) { struct iwl_txq *txq = &trans_pcie->txq[i]; - spin_lock(&txq->lock); + spin_lock_bh(&txq->lock); if (trans_pcie->txq[i].need_update) { iwl_pcie_txq_inc_wr_ptr(trans, txq); trans_pcie->txq[i].need_update = false; } - spin_unlock(&txq->lock); + spin_unlock_bh(&txq->lock); } }