android_kernel_xiaomi_sm8350/drivers/net/wireless
Ivo van Doorn 5f46c4d053 rt2x00: Upgrade queue->lock to use irqsave
The queue->lock could be grabbed from interrupt context,
which could lead to lockdep panic like this:

kernel: ======================================================
kernel: [ INFO: soft-safe -> soft-unsafe lock order detected ]
kernel: 2.6.25-0.95.rc4.fc9 #1
kernel: ------------------------------------------------------
kernel: rt2500pci/1251 [HC0[0]:SC0[1]:HE1:SE0] is trying to acquire:
kernel:  (&queue->lock){--..}, at: [<ffffffff88213339>] rt2x00queue_get_entry+0x5a/0x81 [rt2x00lib]
kernel:
kernel: and this task is already holding:
kernel:  (_xmit_IEEE80211){-...}, at: [<ffffffff8122e9a3>] __qdisc_run+0x84/0x1a9
kernel: which would create a new lock dependency:
kernel:  (_xmit_IEEE80211){-...} -> (&queue->lock){--..}
kernel:
kernel: but this new dependency connects a soft-irq-safe lock:
kernel:  (_xmit_ETHER){-+..}
kernel: ... which became soft-irq-safe at:
kernel:   [<ffffffffffffffff>] 0xffffffffffffffff
kernel:
kernel: to a soft-irq-unsafe lock:
kernel:  (&queue->lock){--..}
kernel: ... which became soft-irq-unsafe at:
kernel: ...  [<ffffffff810545a2>] __lock_acquire+0x62d/0xd63
kernel:   [<ffffffff81054d36>] lock_acquire+0x5e/0x78
kernel:   [<ffffffff812a1497>] _spin_lock+0x26/0x53
kernel:   [<ffffffff88212f98>] rt2x00queue_reset+0x16/0x40 [rt2x00lib]
kernel:   [<ffffffff88212fd4>] rt2x00queue_alloc_entries+0x12/0xab [rt2x00lib]
kernel:   [<ffffffff88213091>] rt2x00queue_initialize+0x24/0xf2 [rt2x00lib]
kernel:   [<ffffffff88212036>] rt2x00lib_start+0x3b/0xd4 [rt2x00lib]
kernel:   [<ffffffff88212609>] rt2x00mac_start+0x18/0x1a [rt2x00lib]
kernel:   [<ffffffff881b9a4b>] ieee80211_open+0x1f3/0x46d [mac80211]
kernel:   [<ffffffff8121d980>] dev_open+0x4d/0x8b
kernel:   [<ffffffff8121d41e>] dev_change_flags+0xaf/0x172
kernel:   [<ffffffff81224fc2>] do_setlink+0x276/0x338
kernel:   [<ffffffff81225198>] rtnl_setlink+0x114/0x116
kernel:   [<ffffffff812262fc>] rtnetlink_rcv_msg+0x1d8/0x1f9
kernel:   [<ffffffff8123649a>] netlink_rcv_skb+0x3e/0xac
kernel:   [<ffffffff8122611a>] rtnetlink_rcv+0x29/0x33
kernel:   [<ffffffff81235eed>] netlink_unicast+0x1fe/0x26b
kernel:   [<ffffffff81236224>] netlink_sendmsg+0x2ca/0x2dd
kernel:   [<ffffffff812103b3>] sock_sendmsg+0xfd/0x120
kernel:   [<ffffffff812105a8>] sys_sendmsg+0x1d2/0x23c
kernel:   [<ffffffff8100c1c7>] tracesys+0xdc/0xe1
kernel:   [<ffffffffffffffff>] 0xffffffffffffffff

This can be fixed by using the irqsave/irqrestore versions
during the queue->lock handling.

Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2008-03-13 16:02:35 -04:00
..
ath5k drivers/net/wireless/ath5k - convert == (true|false) to simple logical tests 2008-03-13 16:02:32 -04:00
b43 b43: pull out helpers for writing noise table 2008-03-13 16:02:33 -04:00
b43legacy Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2008-03-05 12:26:41 -08:00
hostap Add another Prism2 card to hostap 2008-01-31 19:26:51 -08:00
iwlwifi iwlwifi: fix potential lock inversion deadlock 2008-03-07 17:25:26 -05:00
libertas libertas: implement SSID scanning for SIOCSIWSCAN 2008-03-13 16:02:32 -04:00
prism54 prism54: Convert wpa_sem in a mutex 2008-02-29 15:37:17 -05:00
rt2x00 rt2x00: Upgrade queue->lock to use irqsave 2008-03-13 16:02:35 -04:00
zd1211rw zd1211rw: support for mesh interface and beaconing 2008-03-06 17:19:47 -05:00
adm8211.c adm8211: fix cfg80211 band API conversion 2008-02-29 15:41:48 -05:00
adm8211.h cfg80211 API for channels/bitrates, mac80211 and driver conversion 2008-02-29 15:19:32 -05:00
airo_cs.c
airo.c
airo.h
airport.c
arlan-main.c
arlan-proc.c
arlan.h
atmel_cs.c
atmel_pci.c
atmel.c drivers/net/wireless/atmel.c: Use time_* macros 2008-02-29 15:37:11 -05:00
atmel.h
hermes_rid.h
hermes.c
hermes.h
i82586.h
i82593.h
ipw2100.c latency.c: use QoS infrastructure 2008-02-05 09:44:22 -08:00
ipw2100.h
ipw2200.c ipw2200: le*_add_cpu conversion 2008-02-29 15:37:15 -05:00
ipw2200.h ipw2200: do not byteswap struct ipw_associate 2008-01-28 15:09:10 -08:00
Kconfig the scheduled bcm43xx removal 2008-03-13 16:01:04 -04:00
Makefile the scheduled bcm43xx removal 2008-03-13 16:01:04 -04:00
net2280.h
netwave_cs.c pcmcia: replace kio_addr_t with unsigned int everywhere 2008-02-05 09:44:08 -08:00
orinoco_cs.c
orinoco_nortel.c
orinoco_pci.c
orinoco_pci.h
orinoco_plx.c
orinoco_tmd.c
orinoco.c
orinoco.h
p54.h cfg80211 API for channels/bitrates, mac80211 and driver conversion 2008-02-29 15:19:32 -05:00
p54common.c Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2008-03-05 12:26:41 -08:00
p54common.h Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2008-03-05 12:26:41 -08:00
p54pci.c
p54pci.h
p54usb.c p54usb: add USB ID for Linksys WUSB54G ver 2 2008-02-20 17:16:19 -05:00
p54usb.h
ray_cs.c misc wireless annotations 2008-01-28 15:09:11 -08:00
ray_cs.h
rayctl.h
rndis_wlan.c rndis_wlan: cleanup, rename structure members 2008-03-13 16:02:33 -04:00
rtl818x.h cfg80211 API for channels/bitrates, mac80211 and driver conversion 2008-02-29 15:19:32 -05:00
rtl8180_dev.c rtl818x: fix RTS/CTS-less transmit 2008-02-29 15:37:12 -05:00
rtl8180_grf5101.c cfg80211 API for channels/bitrates, mac80211 and driver conversion 2008-02-29 15:19:32 -05:00
rtl8180_grf5101.h Add rtl8180 wireless driver 2008-01-28 15:09:35 -08:00
rtl8180_max2820.c cfg80211 API for channels/bitrates, mac80211 and driver conversion 2008-02-29 15:19:32 -05:00
rtl8180_max2820.h Add rtl8180 wireless driver 2008-01-28 15:09:35 -08:00
rtl8180_rtl8225.c cfg80211 API for channels/bitrates, mac80211 and driver conversion 2008-02-29 15:19:32 -05:00
rtl8180_rtl8225.h Add rtl8180 wireless driver 2008-01-28 15:09:35 -08:00
rtl8180_sa2400.c cfg80211 API for channels/bitrates, mac80211 and driver conversion 2008-02-29 15:19:32 -05:00
rtl8180_sa2400.h Add rtl8180 wireless driver 2008-01-28 15:09:35 -08:00
rtl8180.h cfg80211 API for channels/bitrates, mac80211 and driver conversion 2008-02-29 15:19:32 -05:00
rtl8187_dev.c rtl818x: fix RTS/CTS-less transmit 2008-02-29 15:37:12 -05:00
rtl8187_rtl8225.c cfg80211 API for channels/bitrates, mac80211 and driver conversion 2008-02-29 15:19:32 -05:00
rtl8187_rtl8225.h Add rtl8180 wireless driver 2008-01-28 15:09:35 -08:00
rtl8187.h cfg80211 API for channels/bitrates, mac80211 and driver conversion 2008-02-29 15:19:32 -05:00
spectrum_cs.c
strip.c wireless: Convert to list_for_each_entry_rcu() 2008-02-29 15:37:25 -05:00
wavelan_cs.c pcmcia: replace kio_addr_t with unsigned int everywhere 2008-02-05 09:44:08 -08:00
wavelan_cs.h
wavelan_cs.p.h WAVELAN - compile-time check for struct sizes 2008-01-28 15:09:50 -08:00
wavelan.c WAVELAN - compile-time check for struct sizes 2008-01-28 15:09:50 -08:00
wavelan.h wavelan: mark hardware interfacing structures as packed 2008-02-15 13:44:17 -05:00
wavelan.p.h WAVELAN - compile-time check for struct sizes 2008-01-28 15:09:50 -08:00
wl3501_cs.c
wl3501.h
zd1201.c
zd1201.h