Jiri Kosina
2800aadc18
iwlwifi: Fix softirq/hardirq disabling in iwl_pcie_enqueue_hcmd()
It's possible for iwl_pcie_enqueue_hcmd() to be called with hard IRQs
disabled (e.g. from LED core). We can't enable BHs in such a situation.
Turn the unconditional BH-enable/BH-disable code into
hardirq-disable/conditional-enable.
This fixes the warning below.
WARNING: CPU: 1 PID: 1139 at kernel/softirq.c:178 __local_bh_enable_ip+0xa5/0xf0
CPU: 1 PID: 1139 Comm: NetworkManager Not tainted 5.12.0-rc1-00004-gb4ded168af79 #7
Hardware name: LENOVO 20K5S22R00/20K5S22R00, BIOS R0IET38W (1.16 ) 05/31/2017
RIP: 0010:__local_bh_enable_ip+0xa5/0xf0
Code: f7 69 e8 ee 23 14 00 fb 66 0f 1f 44 00 00 65 8b 05 f0 f4 f7 69 85 c0 74 3f 48 83 c4 08 5b c3 65 8b 05 9b fe f7 69 85 c0 75 8e <0f> 0b eb 8a 48 89 3c 24 e8 4e 20 14 00 48 8b 3c 24 eb 91 e8 13 4e
RSP: 0018:ffffafd580b13298 EFLAGS: 00010046
RAX: 0000000000000000 RBX: 0000000000000201 RCX: 0000000000000000
RDX: 0000000000000003 RSI: 0000000000000201 RDI: ffffffffc1272389
RBP: ffff96517ae4c018 R08: 0000000000000001 R09: 0000000000000000
R10: ffffafd580b13178 R11: 0000000000000001 R12: ffff96517b060000
R13: 0000000000000000 R14: ffffffff80000000 R15: 0000000000000001
FS: 00007fc604ebefc0(0000) GS:ffff965267480000(0000) knlGS:0000000000000000
CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 000055fb3fef13b2 CR3: 0000000109112004 CR4: 00000000003706e0
Call Trace:
? _raw_spin_unlock_bh+0x1f/0x30
iwl_pcie_enqueue_hcmd+0x5d9/0xa00 [iwlwifi]
iwl_trans_txq_send_hcmd+0x6c/0x430 [iwlwifi]
iwl_trans_send_cmd+0x88/0x170 [iwlwifi]
? lock_acquire+0x277/0x3d0
iwl_mvm_send_cmd+0x32/0x80 [iwlmvm]
iwl_mvm_led_set+0xc2/0xe0 [iwlmvm]
? led_trigger_event+0x46/0x70
led_trigger_event+0x46/0x70
ieee80211_do_open+0x5c5/0xa20 [mac80211]
ieee80211_open+0x67/0x90 [mac80211]
__dev_open+0xd4/0x150
__dev_change_flags+0x19e/0x1f0
dev_change_flags+0x23/0x60
do_setlink+0x30d/0x1230
? lock_is_held_type+0xb4/0x120
? __nla_validate_parse.part.7+0x57/0xcb0
? __lock_acquire+0x2e1/0x1a50
__rtnl_newlink+0x560/0x910
? __lock_acquire+0x2e1/0x1a50
? __lock_acquire+0x2e1/0x1a50
? lock_acquire+0x277/0x3d0
? sock_def_readable+0x5/0x290
? lock_is_held_type+0xb4/0x120
? find_held_lock+0x2d/0x90
? sock_def_readable+0xb3/0x290
? lock_release+0x166/0x2a0
? lock_is_held_type+0x90/0x120
rtnl_newlink+0x47/0x70
rtnetlink_rcv_msg+0x25c/0x470
? netlink_deliver_tap+0x97/0x3e0
? validate_linkmsg+0x350/0x350
netlink_rcv_skb+0x50/0x100
netlink_unicast+0x1b2/0x280
netlink_sendmsg+0x336/0x450
sock_sendmsg+0x5b/0x60
____sys_sendmsg+0x1ed/0x250
? copy_msghdr_from_user+0x5c/0x90
___sys_sendmsg+0x88/0xd0
? lock_is_held_type+0xb4/0x120
? find_held_lock+0x2d/0x90
? lock_release+0x166/0x2a0
? __fget_files+0xfe/0x1d0
? __sys_sendmsg+0x5e/0xa0
__sys_sendmsg+0x5e/0xa0
? lockdep_hardirqs_on_prepare+0xd9/0x170
do_syscall_64+0x33/0x80
entry_SYSCALL_64_after_hwframe+0x44/0xae
RIP: 0033:0x7fc605c9572d
Code: 28 89 54 24 1c 48 89 74 24 10 89 7c 24 08 e8 da ee ff ff 8b 54 24 1c 48 8b 74 24 10 41 89 c0 8b 7c 24 08 b8 2e 00 00 00 0f 05 <48> 3d 00 f0 ff ff 77 33 44 89 c7 48 89 44 24 08 e8 2e ef ff ff 48
RSP: 002b:00007fffc83789f0 EFLAGS: 00000293 ORIG_RAX: 000000000000002e
RAX: ffffffffffffffda RBX: 000055ef468570c0 RCX: 00007fc605c9572d
RDX: 0000000000000000 RSI: 00007fffc8378a30 RDI: 000000000000000c
RBP: 0000000000000010 R08: 0000000000000000 R09: 0000000000000000
R10: 0000000000000000 R11: 0000000000000293 R12: 0000000000000000
R13: 00007fffc8378b80 R14: 00007fffc8378b7c R15: 0000000000000000
irq event stamp: 170785
hardirqs last enabled at (170783): [<ffffffff9609a8c2>] __local_bh_enable_ip+0x82/0xf0
hardirqs last disabled at (170784): [<ffffffff96a8613d>] _raw_read_lock_irqsave+0x8d/0x90
softirqs last enabled at (170782): [<ffffffffc1272389>] iwl_pcie_enqueue_hcmd+0x5d9/0xa00 [iwlwifi]
softirqs last disabled at (170785): [<ffffffffc1271ec6>] iwl_pcie_enqueue_hcmd+0x116/0xa00 [iwlwifi]
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
Tested-by: Sedat Dilek <sedat.dilek@gmail.com> # LLVM/Clang v12.0.0-rc3
Acked-by: Luca Coelho <luciano.coelho@intel.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Link: https://lore.kernel.org/r/nycvar.YFH.7.76.2103021125430.12405@cbobk.fhfr.pm
2021-03-23 11:34:57 +02:00
..
2021-02-24 10:25:37 -08:00
2021-02-25 12:03:13 -08:00
2021-03-08 15:16:30 -08:00
2021-02-26 09:41:03 -08:00
2021-03-01 17:40:38 +01:00
2021-03-03 06:48:44 -07:00
2021-02-20 21:28:04 -08:00
2021-02-24 10:25:37 -08:00
2021-03-07 13:24:44 -08:00
2021-02-26 10:28:35 -08:00
2021-02-22 14:11:36 -08:00
2021-02-24 10:35:29 -08:00
2021-03-02 22:41:23 +11:00
2021-02-22 14:44:39 -08:00
2021-02-27 08:07:12 -08:00
2021-02-15 17:02:04 +01:00
2021-02-23 15:05:10 -08:00
2021-02-24 21:05:28 +05:30
2021-02-15 10:06:58 +01:00
2021-02-09 12:16:20 +01:00
2021-02-24 10:25:37 -08:00
2021-03-08 11:59:17 +01:00
2021-03-05 11:13:22 +10:00
2021-02-23 14:52:22 -08:00
2021-02-26 09:41:00 -08:00
2021-02-22 10:05:12 -08:00
2021-02-09 11:36:50 -06:00
2021-02-22 14:27:07 -08:00
2021-02-26 11:47:42 +01:00
2021-02-22 09:52:55 -08:00
2021-02-28 15:48:25 -08:00
2021-02-22 09:39:11 -08:00
2021-03-05 14:15:22 -04:00
2021-02-23 14:56:23 -08:00
2021-03-05 12:26:24 -08:00
2021-02-09 09:48:23 +01:00
2021-02-15 15:41:56 +01:00
2021-02-26 13:56:40 -08:00
2021-02-14 21:27:24 -07:00
2021-02-22 13:34:27 -06:00
2021-03-05 13:25:23 -08:00
2021-02-22 17:45:02 -08:00
2021-02-24 10:25:37 -08:00
2021-02-24 10:35:29 -08:00
2021-03-02 22:41:23 +11:00
2021-02-26 13:59:32 -08:00
2021-02-21 13:57:08 -08:00
2021-03-23 11:34:57 +02:00
2021-02-24 10:25:37 -08:00
2021-02-23 14:12:53 -06:00
2021-02-24 09:35:54 -08:00
2021-03-05 13:41:03 +01:00
2021-02-24 10:25:37 -08:00
2021-02-18 12:31:08 +05:30
2021-02-25 09:56:08 -08:00
2021-02-26 13:54:43 -08:00
2021-02-22 10:31:29 -08:00
2021-02-10 10:39:23 +01:00
2021-02-26 10:28:35 -08:00
2021-02-25 12:03:13 -08:00
2021-03-01 17:43:29 +01:00
2021-02-17 13:49:26 -08:00
2021-02-25 12:23:49 -08:00
2021-02-22 09:29:42 -08:00
2021-02-11 12:52:18 -06:00
2021-02-26 10:28:35 -08:00
2021-02-27 08:07:12 -08:00
2021-03-09 17:15:56 -08:00
2021-03-07 13:24:44 -08:00
2021-02-26 14:16:06 -08:00
2021-03-02 15:33:00 +01:00
2021-02-22 14:34:00 -08:00
2021-02-12 12:26:46 +01:00
2021-02-27 08:07:12 -08:00
2021-02-28 11:51:20 -08:00
2021-02-09 16:10:49 +01:00
2021-02-22 09:39:11 -08:00
2021-02-09 13:00:07 +01:00
2021-03-02 22:41:23 +11:00
2021-02-09 12:25:32 +01:00
2021-02-25 10:17:31 -08:00
2021-02-23 07:52:59 -05:00
2021-02-24 10:43:40 -08:00
2021-02-25 12:21:08 -08:00
2021-02-25 12:10:22 -08:00
2021-02-09 10:58:19 +01:00
2021-02-26 09:50:09 -08:00
2021-02-09 12:15:07 +01:00
2021-02-24 10:25:37 -08:00
2021-02-26 10:04:45 -08:00
2021-02-16 20:36:38 -08:00
2021-02-24 10:35:29 -08:00