Search Linux Wireless

iwlwifi: WARNING: SOFTIRQ-safe -> SOFTIRQ-unsafe lock order detected

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

 



Hi!

On 5.3.0-rc6+, I get the following lockdep warning:

=====================================================
WARNING: SOFTIRQ-safe -> SOFTIRQ-unsafe lock order detected
5.3.0-rc6+ #1 Tainted: G                T
-----------------------------------------------------
kworker/u16:1/59 [HC0[0]:SC0[2]:HE1:SE0] is trying to acquire:
000000009c839cff (&(&mvm_sta->lq_sta.rs_drv.pers.lock)->rlock){+.+.}, at: iwl_mvm_rs_rate_init+0x53/0x80

0000000084f6e8c2 (&(&sta->rate_ctrl_lock)->rlock){+.-.}, at: rate_control_rate_update+0xd0/0x1f0
which would create a new lock dependency:
 (&(&sta->rate_ctrl_lock)->rlock){+.-.} -> (&(&mvm_sta->lq_sta.rs_drv.pers.lock)->rlock){+.+.}

 (&(&sta->rate_ctrl_lock)->rlock){+.-.}

  lock_acquire+0xb8/0x1b0
  _raw_spin_lock_bh+0x39/0x80
  rate_control_get_rate+0x10e/0x140
  ieee80211_tx_h_rate_ctrl+0x1a9/0x3f0
  ieee80211_xmit_fast+0x260/0x9d0
  __ieee80211_subif_start_xmit+0x146/0x390
  ieee80211_subif_start_xmit+0x4a/0x3c0
  dev_hard_start_xmit+0xb0/0x310
  sch_direct_xmit+0xed/0x230
  __dev_queue_xmit+0x5ef/0xc10
  ip_finish_output2+0x2f2/0x9a0
  ip_output+0x84/0x250
  __ip_queue_xmit+0x1e0/0x5e0
  __tcp_transmit_skb+0x59f/0xb70
  tcp_write_xmit+0x369/0x1110
  tcp_tsq_handler+0x4f/0xa0
  tcp_tasklet_func+0xdd/0x120
  tasklet_action_common.isra.0+0x60/0xb0
  __do_softirq+0xf0/0x478
  do_softirq_own_stack+0x2a/0x40
  do_softirq.part.0+0x4e/0x50
  __local_bh_enable_ip+0xfb/0x100
  iwl_pcie_irq_handler+0x1e9/0x7e0
  irq_thread_fn+0x20/0x60
  irq_thread+0xfa/0x1b0
  kthread+0x10a/0x140
  ret_from_fork+0x3a/0x50

 (&(&mvm_sta->lq_sta.rs_drv.pers.lock)->rlock){+.+.}

...
  lock_acquire+0xb8/0x1b0
  _raw_spin_lock+0x34/0x80
  iwl_mvm_rs_rate_init+0x53/0x80
  iwl_mvm_mac_sta_state+0x39c/0x640
  drv_sta_state+0xb2/0x7c0
  sta_info_move_state+0x196/0x280
  ieee80211_assoc_success+0x91e/0xfd0
  ieee80211_rx_mgmt_assoc_resp.cold+0x2dd/0x5f4
  ieee80211_sta_rx_queued_mgmt+0xd7/0x7d0
  ieee80211_iface_work+0x1c4/0x2f0
  process_one_work+0x234/0x580
  worker_thread+0x50/0x3b0
  kthread+0x10a/0x140
  ret_from_fork+0x3a/0x50

 Possible interrupt unsafe locking scenario:
       CPU0                    CPU1
       ----                    ----
  lock(&(&mvm_sta->lq_sta.rs_drv.pers.lock)->rlock);
                               local_irq_disable();
                               lock(&(&sta->rate_ctrl_lock)->rlock);
                               lock(&(&mvm_sta->lq_sta.rs_drv.pers.lock)->rlock);
  <Interrupt>
    lock(&(&sta->rate_ctrl_lock)->rlock);

6 locks held by kworker/u16:1/59:
 #0: 000000001e6d0995 ((wq_completion)phy0){+.+.}, at: process_one_work+0x1b1/0x580
 #1: 00000000378cac4d ((work_completion)(&sdata->work)){+.+.}, at: process_one_work+0x1b1/0x580
 #2: 00000000bbbbed75 (&wdev->mtx){+.+.}, at: ieee80211_sta_rx_queued_mgmt+0x51/0x7d0
 #3: 000000007f128f47 (&local->sta_mtx){+.+.}, at: ieee80211_rx_mgmt_beacon+0x583/0x16c0
 #4: 00000000fc24f76f (rcu_read_lock){....}, at: rate_control_rate_update+0x44/0x1f0
 #5: 0000000084f6e8c2 (&(&sta->rate_ctrl_lock)->rlock){+.-.}, at: rate_control_rate_update+0xd0/0x1f0

-> (&(&sta->rate_ctrl_lock)->rlock){+.-.} ops: 99793 {
   HARDIRQ-ON-W at:
                    lock_acquire+0xb8/0x1b0
                    _raw_spin_lock_bh+0x39/0x80
                    rate_control_rate_init+0xba/0x1d0
                    ieee80211_assoc_success+0x8bc/0xfd0
                    ieee80211_rx_mgmt_assoc_resp.cold+0x2dd/0x5f4
                    ieee80211_sta_rx_queued_mgmt+0xd7/0x7d0
                    ieee80211_iface_work+0x1c4/0x2f0
                    process_one_work+0x234/0x580
                    worker_thread+0x50/0x3b0
                    kthread+0x10a/0x140
                    ret_from_fork+0x3a/0x50
   IN-SOFTIRQ-W at:
                    lock_acquire+0xb8/0x1b0
                    _raw_spin_lock_bh+0x39/0x80
                    rate_control_get_rate+0x10e/0x140
                    ieee80211_tx_h_rate_ctrl+0x1a9/0x3f0
                    ieee80211_xmit_fast+0x260/0x9d0
                    __ieee80211_subif_start_xmit+0x146/0x390
                    ieee80211_subif_start_xmit+0x4a/0x3c0
                    dev_hard_start_xmit+0xb0/0x310
                    sch_direct_xmit+0xed/0x230
                    __dev_queue_xmit+0x5ef/0xc10
                    ip_finish_output2+0x2f2/0x9a0
                    ip_output+0x84/0x250
                    __ip_queue_xmit+0x1e0/0x5e0
                    __tcp_transmit_skb+0x59f/0xb70
                    tcp_write_xmit+0x369/0x1110
                    tcp_tsq_handler+0x4f/0xa0
                    tcp_tasklet_func+0xdd/0x120
                    tasklet_action_common.isra.0+0x60/0xb0
                    __do_softirq+0xf0/0x478
                    do_softirq_own_stack+0x2a/0x40
                    do_softirq.part.0+0x4e/0x50
                    __local_bh_enable_ip+0xfb/0x100
                    iwl_pcie_irq_handler+0x1e9/0x7e0
                    irq_thread_fn+0x20/0x60
                    irq_thread+0xfa/0x1b0
                    kthread+0x10a/0x140
                    ret_from_fork+0x3a/0x50
   INITIAL USE at:
                   lock_acquire+0xb8/0x1b0
                   _raw_spin_lock_bh+0x39/0x80
                   rate_control_rate_init+0xba/0x1d0
                   ieee80211_assoc_success+0x8bc/0xfd0
                   ieee80211_rx_mgmt_assoc_resp.cold+0x2dd/0x5f4
                   ieee80211_sta_rx_queued_mgmt+0xd7/0x7d0
                   ieee80211_iface_work+0x1c4/0x2f0
                   process_one_work+0x234/0x580
                   worker_thread+0x50/0x3b0
                   kthread+0x10a/0x140
                   ret_from_fork+0x3a/0x50
 }
 ... key      at: [<ffffffff8ca725b0>] __key.104096+0x0/0x10
 ... acquired at:
   lock_acquire+0xb8/0x1b0
   _raw_spin_lock+0x34/0x80
   iwl_mvm_rs_rate_init+0x53/0x80
   rate_control_rate_update+0xf2/0x1f0
   ieee80211_rx_mgmt_beacon.cold+0x131/0x20b
   ieee80211_sta_rx_queued_mgmt+0x8b/0x7d0
   ieee80211_iface_work+0x1c4/0x2f0
   process_one_work+0x234/0x580
   worker_thread+0x50/0x3b0
   kthread+0x10a/0x140
   ret_from_fork+0x3a/0x50


 and SOFTIRQ-irq-unsafe lock:
-> (&(&mvm_sta->lq_sta.rs_drv.pers.lock)->rlock){+.+.} ops: 51276 {
   HARDIRQ-ON-W at:
                    lock_acquire+0xb8/0x1b0
                    _raw_spin_lock+0x34/0x80
                    iwl_mvm_rs_rate_init+0x53/0x80
                    iwl_mvm_mac_sta_state+0x39c/0x640
                    drv_sta_state+0xb2/0x7c0
                    sta_info_move_state+0x196/0x280
                    ieee80211_assoc_success+0x91e/0xfd0
                    ieee80211_rx_mgmt_assoc_resp.cold+0x2dd/0x5f4
                    ieee80211_sta_rx_queued_mgmt+0xd7/0x7d0
                    ieee80211_iface_work+0x1c4/0x2f0
                    process_one_work+0x234/0x580
                    worker_thread+0x50/0x3b0
                    kthread+0x10a/0x140
                    ret_from_fork+0x3a/0x50
   SOFTIRQ-ON-W at:
                    lock_acquire+0xb8/0x1b0
                    _raw_spin_lock+0x34/0x80
                    iwl_mvm_rs_rate_init+0x53/0x80
                    iwl_mvm_mac_sta_state+0x39c/0x640
                    drv_sta_state+0xb2/0x7c0
                    sta_info_move_state+0x196/0x280
                    ieee80211_assoc_success+0x91e/0xfd0
                    ieee80211_rx_mgmt_assoc_resp.cold+0x2dd/0x5f4
                    ieee80211_sta_rx_queued_mgmt+0xd7/0x7d0
                    ieee80211_iface_work+0x1c4/0x2f0
                    process_one_work+0x234/0x580
                    worker_thread+0x50/0x3b0
                    kthread+0x10a/0x140
                    ret_from_fork+0x3a/0x50
   INITIAL USE at:
                   lock_acquire+0xb8/0x1b0
                   _raw_spin_lock+0x34/0x80
                   iwl_mvm_rs_rate_init+0x53/0x80
                   iwl_mvm_mac_sta_state+0x39c/0x640
                   drv_sta_state+0xb2/0x7c0
                   sta_info_move_state+0x196/0x280
                   ieee80211_assoc_success+0x91e/0xfd0
                   ieee80211_rx_mgmt_assoc_resp.cold+0x2dd/0x5f4
                   ieee80211_sta_rx_queued_mgmt+0xd7/0x7d0
                   ieee80211_iface_work+0x1c4/0x2f0
                   process_one_work+0x234/0x580
                   worker_thread+0x50/0x3b0
                   kthread+0x10a/0x140
                   ret_from_fork+0x3a/0x50
 }
 ... key      at: [<ffffffff8ca40eb0>] __key.90552+0x0/0x10
 ... acquired at:
   lock_acquire+0xb8/0x1b0
   _raw_spin_lock+0x34/0x80
   iwl_mvm_rs_rate_init+0x53/0x80
   rate_control_rate_update+0xf2/0x1f0
   ieee80211_rx_mgmt_beacon.cold+0x131/0x20b
   ieee80211_sta_rx_queued_mgmt+0x8b/0x7d0
   ieee80211_iface_work+0x1c4/0x2f0
   process_one_work+0x234/0x580
   worker_thread+0x50/0x3b0
   kthread+0x10a/0x140
   ret_from_fork+0x3a/0x50


CPU: 2 PID: 59 Comm: kworker/u16:1 Tainted: G                T 5.3.0-rc6+ #1
Hardware name: Dell Inc. Latitude 7390/09386V, BIOS 1.9.2 04/03/2019
Workqueue: phy0 ieee80211_iface_work
Call Trace:
 dump_stack+0x67/0x98
 check_irq_usage.cold+0x495/0x50a
 ? mark_held_locks+0x46/0x70
 ? check_noncircular+0xbf/0x1c0
 ? lockdep_hardirqs_on+0xe3/0x1b0
 ? __lock_acquire+0xe6a/0x1ac0
 __lock_acquire+0xe6a/0x1ac0
 lock_acquire+0xb8/0x1b0
 ? iwl_mvm_rs_rate_init+0x53/0x80
 _raw_spin_lock+0x34/0x80
 ? iwl_mvm_rs_rate_init+0x53/0x80
 iwl_mvm_rs_rate_init+0x53/0x80
 rate_control_rate_update+0xf2/0x1f0
 ieee80211_rx_mgmt_beacon.cold+0x131/0x20b
 ? _raw_spin_unlock_irqrestore+0x34/0x60
 ? _raw_spin_unlock_irqrestore+0x3e/0x60
 ieee80211_sta_rx_queued_mgmt+0x8b/0x7d0
 ? __lock_acquire+0x4dc/0x1ac0
 ? __lock_acquire+0x4dc/0x1ac0
 ? skb_dequeue+0x18/0x70
 ? preempt_count_sub+0x9b/0xd0
 ieee80211_iface_work+0x1c4/0x2f0
 process_one_work+0x234/0x580
 worker_thread+0x50/0x3b0
 kthread+0x10a/0x140
 ? process_one_work+0x580/0x580
 ? kthread_park+0x80/0x80
 ret_from_fork+0x3a/0x50


Thanks,
	Dominik



[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Wireless Personal Area Network]     [Linux Bluetooth]     [Wireless Regulations]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Hiking]     [MIPS Linux]     [ARM Linux]     [Linux RAID]

  Powered by Linux