summaryrefslogtreecommitdiff
path: root/sound/soc
diff options
context:
space:
mode:
authorAlexander Wetzel <alexander@wetzel-home.de>2022-04-22 17:52:28 +0300
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2022-06-09 11:30:52 +0300
commit98e55b0b876bde3353f4e074883d66ecb55c65a3 (patch)
tree0b846ccf781768c6d534e11f891379e00d4b545a /sound/soc
parent0d691a3a40f620bb2d2f5c9a0fedcb138671d457 (diff)
downloadlinux-98e55b0b876bde3353f4e074883d66ecb55c65a3.tar.xz
rtl818x: Prevent using not initialized queues
commit 746285cf81dc19502ab238249d75f5990bd2d231 upstream. Using not existing queues can panic the kernel with rtl8180/rtl8185 cards. Ignore the skb priority for those cards, they only have one tx queue. Pierre Asselin (pa@panix.com) reported the kernel crash in the Gentoo forum: https://forums.gentoo.org/viewtopic-t-1147832-postdays-0-postorder-asc-start-25.html He also confirmed that this patch fixes the issue. In summary this happened: After updating wpa_supplicant from 2.9 to 2.10 the kernel crashed with a "divide error: 0000" when connecting to an AP. Control port tx now tries to use IEEE80211_AC_VO for the priority, which wpa_supplicants starts to use in 2.10. Since only the rtl8187se part of the driver supports QoS, the priority of the skb is set to IEEE80211_AC_BE (2) by mac80211 for rtl8180/rtl8185 cards. rtl8180 is then unconditionally reading out the priority and finally crashes on drivers/net/wireless/realtek/rtl818x/rtl8180/dev.c line 544 without this patch: idx = (ring->idx + skb_queue_len(&ring->queue)) % ring->entries "ring->entries" is zero for rtl8180/rtl8185 cards, tx_ring[2] never got initialized. Cc: stable@vger.kernel.org Reported-by: pa@panix.com Tested-by: pa@panix.com Signed-off-by: Alexander Wetzel <alexander@wetzel-home.de> Signed-off-by: Kalle Valo <kvalo@kernel.org> Link: https://lore.kernel.org/r/20220422145228.7567-1-alexander@wetzel-home.de Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'sound/soc')
0 files changed, 0 insertions, 0 deletions