In the Linux kernel, the following vulnerability has been resolved:
rtl818x: Prevent using not initialized queues
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 wpasupplicant 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 IEEE80211ACVO for the priority, which wpasupplicants starts to use in 2.10.
Since only the rtl8187se part of the driver supports QoS, the priority of the skb is set to IEEE80211ACBE (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 + skbqueuelen(&ring->queue)) % ring->entries
"ring->entries" is zero for rtl8180/rtl8185 cards, tx_ring[2] never got initialized.
[ { "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@9d5e96cc1f1720019ce27b127a31695148d38bb0", "target": { "function": "rtl8180_tx", "file": "drivers/net/wireless/realtek/rtl818x/rtl8180/dev.c" }, "id": "CVE-2022-49326-0040bf29", "deprecated": false, "signature_version": "v1", "digest": { "function_hash": "120035870225934725655140935212787835269", "length": 3152.0 }, "signature_type": "Function" }, { "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@b8ce58ab80faaea015c206382041ff3bcf5495ff", "target": { "function": "rtl8180_tx", "file": "drivers/net/wireless/realtek/rtl818x/rtl8180/dev.c" }, "id": "CVE-2022-49326-0b572a99", "deprecated": false, "signature_version": "v1", "digest": { "function_hash": "120035870225934725655140935212787835269", "length": 3152.0 }, "signature_type": "Function" }, { "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@b5dca2cd3f0239512da808598b4e70557eb4c2a1", "target": { "file": "drivers/net/wireless/realtek/rtl818x/rtl8180/dev.c" }, "id": "CVE-2022-49326-1006f4b9", "deprecated": false, "signature_version": "v1", "digest": { "line_hashes": [ "105749555759079617081891089206517087630", "60119176531943005011463509982755559956", "143323145751920867802789548330073774121", "310312517206674093415211928427950966341", "63022074083277116634293805596583185965", "153993938160861356824164387868392853970", "47141926363446302944474029529851972452", "132365327358872568276372567288910579196", "144184193507448232214312820944590641305", "272107396190204428083465479852850631618" ], "threshold": 0.9 }, "signature_type": "Line" }, { "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@746285cf81dc19502ab238249d75f5990bd2d231", "target": { "function": "rtl8180_tx", "file": "drivers/net/wireless/realtek/rtl818x/rtl8180/dev.c" }, "id": "CVE-2022-49326-1195eb37", "deprecated": false, "signature_version": "v1", "digest": { "function_hash": "271741411645366258740192583848031643460", "length": 3171.0 }, "signature_type": "Function" }, { "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@b8ce58ab80faaea015c206382041ff3bcf5495ff", "target": { "file": "drivers/net/wireless/realtek/rtl818x/rtl8180/dev.c" }, "id": "CVE-2022-49326-2d10a9ba", "deprecated": false, "signature_version": "v1", "digest": { "line_hashes": [ "105749555759079617081891089206517087630", "60119176531943005011463509982755559956", "143323145751920867802789548330073774121", "310312517206674093415211928427950966341", "63022074083277116634293805596583185965", "153993938160861356824164387868392853970", "47141926363446302944474029529851972452", "132365327358872568276372567288910579196", "144184193507448232214312820944590641305", "272107396190204428083465479852850631618" ], "threshold": 0.9 }, "signature_type": "Line" }, { "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@9d5e96cc1f1720019ce27b127a31695148d38bb0", "target": { "file": "drivers/net/wireless/realtek/rtl818x/rtl8180/dev.c" }, "id": "CVE-2022-49326-2efa0d10", "deprecated": false, "signature_version": "v1", "digest": { "line_hashes": [ "105749555759079617081891089206517087630", "60119176531943005011463509982755559956", "143323145751920867802789548330073774121", "310312517206674093415211928427950966341", "63022074083277116634293805596583185965", "153993938160861356824164387868392853970", "47141926363446302944474029529851972452", "132365327358872568276372567288910579196", "144184193507448232214312820944590641305", "272107396190204428083465479852850631618" ], "threshold": 0.9 }, "signature_type": "Line" }, { "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@b5dca2cd3f0239512da808598b4e70557eb4c2a1", "target": { "function": "rtl8180_tx", "file": "drivers/net/wireless/realtek/rtl818x/rtl8180/dev.c" }, "id": "CVE-2022-49326-3cc74d49", "deprecated": false, "signature_version": "v1", "digest": { "function_hash": "120035870225934725655140935212787835269", "length": 3152.0 }, "signature_type": "Function" }, { "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@769ec2a824deae2f1268dfda14999a4d14d0d0c5", "target": { "function": "rtl8180_tx", "file": "drivers/net/wireless/realtek/rtl818x/rtl8180/dev.c" }, "id": "CVE-2022-49326-4b650e9a", "deprecated": false, "signature_version": "v1", "digest": { "function_hash": "271741411645366258740192583848031643460", "length": 3171.0 }, "signature_type": "Function" }, { "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@d7e30dfc166d33470bba31a42f9bbc346e5409d5", "target": { "function": "rtl8180_tx", "file": "drivers/net/wireless/realtek/rtl818x/rtl8180/dev.c" }, "id": "CVE-2022-49326-527964e5", "deprecated": false, "signature_version": "v1", "digest": { "function_hash": "120035870225934725655140935212787835269", "length": 3152.0 }, "signature_type": "Function" }, { "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@9ad1981fc4de3afb7db3e8eb5a6a52d4c7d0d577", "target": { "function": "rtl8180_tx", "file": "drivers/net/wireless/realtek/rtl818x/rtl8180/dev.c" }, "id": "CVE-2022-49326-5d22af7c", "deprecated": false, "signature_version": "v1", "digest": { "function_hash": "271741411645366258740192583848031643460", "length": 3171.0 }, "signature_type": "Function" }, { "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@9ad1981fc4de3afb7db3e8eb5a6a52d4c7d0d577", "target": { "file": "drivers/net/wireless/realtek/rtl818x/rtl8180/dev.c" }, "id": "CVE-2022-49326-6f3c1885", "deprecated": false, "signature_version": "v1", "digest": { "line_hashes": [ "105749555759079617081891089206517087630", "60119176531943005011463509982755559956", "143323145751920867802789548330073774121", "310312517206674093415211928427950966341", "63022074083277116634293805596583185965", "153993938160861356824164387868392853970", "47141926363446302944474029529851972452", "132365327358872568276372567288910579196", "115397631147548827845754312495790643567", "326127061771199447385770120466445094354" ], "threshold": 0.9 }, "signature_type": "Line" }, { "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@746285cf81dc19502ab238249d75f5990bd2d231", "target": { "file": "drivers/net/wireless/realtek/rtl818x/rtl8180/dev.c" }, "id": "CVE-2022-49326-76b310fd", "deprecated": false, "signature_version": "v1", "digest": { "line_hashes": [ "105749555759079617081891089206517087630", "60119176531943005011463509982755559956", "143323145751920867802789548330073774121", "310312517206674093415211928427950966341", "63022074083277116634293805596583185965", "153993938160861356824164387868392853970", "47141926363446302944474029529851972452", "132365327358872568276372567288910579196", "115397631147548827845754312495790643567", "326127061771199447385770120466445094354" ], "threshold": 0.9 }, "signature_type": "Line" }, { "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@769ec2a824deae2f1268dfda14999a4d14d0d0c5", "target": { "file": "drivers/net/wireless/realtek/rtl818x/rtl8180/dev.c" }, "id": "CVE-2022-49326-7e65b2e7", "deprecated": false, "signature_version": "v1", "digest": { "line_hashes": [ "105749555759079617081891089206517087630", "60119176531943005011463509982755559956", "143323145751920867802789548330073774121", "310312517206674093415211928427950966341", "63022074083277116634293805596583185965", "153993938160861356824164387868392853970", "47141926363446302944474029529851972452", "132365327358872568276372567288910579196", "115397631147548827845754312495790643567", "326127061771199447385770120466445094354" ], "threshold": 0.9 }, "signature_type": "Line" }, { "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@6ad81ad0cf5744738ce94c8e64051ddd80a1734c", "target": { "function": "rtl8180_tx", "file": "drivers/net/wireless/realtek/rtl818x/rtl8180/dev.c" }, "id": "CVE-2022-49326-d706acb8", "deprecated": false, "signature_version": "v1", "digest": { "function_hash": "271741411645366258740192583848031643460", "length": 3171.0 }, "signature_type": "Function" }, { "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@98e55b0b876bde3353f4e074883d66ecb55c65a3", "target": { "function": "rtl8180_tx", "file": "drivers/net/wireless/realtek/rtl818x/rtl8180/dev.c" }, "id": "CVE-2022-49326-dba399ee", "deprecated": false, "signature_version": "v1", "digest": { "function_hash": "271741411645366258740192583848031643460", "length": 3171.0 }, "signature_type": "Function" }, { "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@6ad81ad0cf5744738ce94c8e64051ddd80a1734c", "target": { "file": "drivers/net/wireless/realtek/rtl818x/rtl8180/dev.c" }, "id": "CVE-2022-49326-e4e49f63", "deprecated": false, "signature_version": "v1", "digest": { "line_hashes": [ "105749555759079617081891089206517087630", "60119176531943005011463509982755559956", "143323145751920867802789548330073774121", "310312517206674093415211928427950966341", "63022074083277116634293805596583185965", "153993938160861356824164387868392853970", "47141926363446302944474029529851972452", "132365327358872568276372567288910579196", "115397631147548827845754312495790643567", "326127061771199447385770120466445094354" ], "threshold": 0.9 }, "signature_type": "Line" }, { "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@d7e30dfc166d33470bba31a42f9bbc346e5409d5", "target": { "file": "drivers/net/wireless/realtek/rtl818x/rtl8180/dev.c" }, "id": "CVE-2022-49326-e82e4ec9", "deprecated": false, "signature_version": "v1", "digest": { "line_hashes": [ "105749555759079617081891089206517087630", "60119176531943005011463509982755559956", "143323145751920867802789548330073774121", "310312517206674093415211928427950966341", "63022074083277116634293805596583185965", "153993938160861356824164387868392853970", "47141926363446302944474029529851972452", "132365327358872568276372567288910579196", "144184193507448232214312820944590641305", "272107396190204428083465479852850631618" ], "threshold": 0.9 }, "signature_type": "Line" }, { "source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@98e55b0b876bde3353f4e074883d66ecb55c65a3", "target": { "file": "drivers/net/wireless/realtek/rtl818x/rtl8180/dev.c" }, "id": "CVE-2022-49326-e98bd722", "deprecated": false, "signature_version": "v1", "digest": { "line_hashes": [ "105749555759079617081891089206517087630", "60119176531943005011463509982755559956", "143323145751920867802789548330073774121", "310312517206674093415211928427950966341", "63022074083277116634293805596583185965", "153993938160861356824164387868392853970", "47141926363446302944474029529851972452", "132365327358872568276372567288910579196", "115397631147548827845754312495790643567", "326127061771199447385770120466445094354" ], "threshold": 0.9 }, "signature_type": "Line" } ]