drivers: staging: rtl8192e: Fix deadlock in rtllib_beacons_stop()
In the Linux kernel, the following vulnerability has been resolved: drivers: staging: rtl8192e: Fix deadlock in rtllib_beacons_stop() There is a deadlock in rtllib_beacons_stop(), which is shown below: (Thread 1) | (Thread 2) | rtllib_send_beacon() rtllib_beacons_stop() | mod_timer() spin_lock_irqsave() //(1) | (wait a time) ... | rtllib_send_beacon_cb() del_timer_sync() | spin_lock_irqsave() //(2) (wait timer to stop) | ... We hold ieee->beacon_lock in position (1) of thread 1 and use del_timer_sync() to wait timer to stop, but timer handler also need ieee->beacon_lock in position (2) of thread 2. As a result, rtllib_beacons_stop() will block forever. This patch extracts del_timer_sync() from the protection of spin_lock_irqsave(), which could let timer handler to obtain the needed lock.
- Products
- Kernel
- Affected versions
- Not specified
- Fixed versions
- 4.14.283, 4.19.247, 4.9.318, 5.10.122, 5.15.47, 5.17.15, 5.18.4, 5.4.198
- CVEs
- CVE-2022-49315
- Confirmed fixed CVEs
- Not specified
- Updated in this feed
- 4 Nov 2026, 04:25 UTC · Revision 1
Source evidence
drivers: staging: rtl8192e: Fix deadlock in rtllib_beacons_stop()
core-osv · Original sourcePublished 26 Feb 2025, 02:10 UTC
In the Linux kernel, the following vulnerability has been resolved: drivers: staging: rtl8192e: Fix deadlock in rtllib_beacons_stop() There is a deadlock in rtllib_beacons_stop(), which is shown below: (Thread 1) | (Thread 2) | rtllib_send_beacon() rtllib_beacons_stop() | mod_timer() spin_lock_irqsave() //(1) | (wait a time) ... | rtllib_send_beacon_cb() del_timer_sync() | spin_lock_irqsave() //(2) (wait timer to stop) | ... We hold ieee->beacon_lock in position (1) of thread 1 and use del_timer_sync() to wait timer to stop, but timer handler also need ieee->beacon_lock in position (2) of thread 2. As a result, rtllib_beacons_stop() will block forever. This patch extracts del_timer_sync() from the protection of spin_lock_irqsave(), which could let timer handler to obtain the needed lock.
osv:CVE-2022-49315
Kernel
Fixed versions: 4.9.318, 4.14.283, 4.19.247, 5.4.198, 5.10.122, 5.15.47, 5.17.15, 5.18.4
Complete source record
{
"id": "0fa1c56ed4a5a1fe5d13af150ddb3353a07cbe88d23ec446e457bacbe8b834b3",
"url": "https://osv.dev/vulnerability/CVE-2022-49315",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "drivers: staging: rtl8192e: Fix deadlock in rtllib_beacons_stop()",
"summary": "In the Linux kernel, the following vulnerability has been resolved: drivers: staging: rtl8192e: Fix deadlock in rtllib_beacons_stop() There is a deadlock in rtllib_beacons_stop(), which is shown below: (Thread 1) | (Thread 2) | rtllib_send_beacon() rtllib_beacons_stop() | mod_timer() spin_lock_irqsave() //(1) | (wait a time) ... | rtllib_send_beacon_cb() del_timer_sync() | spin_lock_irqsave() //(2) (wait timer to stop) | ... We hold ieee->beacon_lock in position (1) of thread 1 and use del_timer_sync() to wait timer to stop, but timer handler also need ieee->beacon_lock in position (2) of thread 2. As a result, rtllib_beacons_stop() will block forever. This patch extracts del_timer_sync() from the protection of spin_lock_irqsave(), which could let timer handler to obtain the needed lock.",
"evidence": "osv:CVE-2022-49315",
"products": [
{
"name": {
"value": "Kernel",
"evidence": "/affected/1/package/name"
},
"prerequisites": [],
"fixed_versions": [
{
"value": "4.9.318",
"evidence": "/affected/1/ranges"
},
{
"value": "4.14.283",
"evidence": "/affected/1/ranges"
},
{
"value": "4.19.247",
"evidence": "/affected/1/ranges"
},
{
"value": "5.4.198",
"evidence": "/affected/1/ranges"
},
{
"value": "5.10.122",
"evidence": "/affected/1/ranges"
},
{
"value": "5.15.47",
"evidence": "/affected/1/ranges"
},
{
"value": "5.17.15",
"evidence": "/affected/1/ranges"
},
{
"value": "5.18.4",
"evidence": "/affected/1/ranges"
}
],
"affected_versions": []
}
],
"severity": "medium",
"structured": {
"id": "CVE-2022-49315",
"aliases": [
"CVE-2022-49315"
],
"metrics": [
{
"type": "CVSS_V3",
"score": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H"
}
],
"affected": [
{
"ranges": [
{
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"type": "GIT",
"events": [
{
"introduced": "94a799425eee8225a1e3fbe5f473d2ef04002577"
},
{
"fixed": "4681129fda9e8555392eaaadb239ec6a6e2b3e12"
},
{
"fixed": "381045dc64d23a2229c47c5524c06bfc33d34446"
},
{
"fixed": "08bacf871c019163ccd1389d0bc957a43324967a"
},
{
"fixed": "64b05fa212c7e4d057676e8b7e7120c6eb2f615b"
},
{
"fixed": "0f69d7d5e918aa43423d86bd17ddb11b1b5e8ada"
},
{
"fixed": "fef451f0fbbe85dbd2962b18379d02e2965610db"
},
{
"fixed": "46c861009bf437a18417df24cea0d181741b7d72"
},
{
"fixed": "ffd4c4d5293e4985092ea45ba21cad9326e2e434"
},
{
"fixed": "9b6bdbd9337de3917945847bde262a34a87a6303"
}
]
}
],
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2022-49315.json"
}
},
{
"ranges": [
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "3.2.0"
},
{
"fixed": "4.9.318"
}
]
},
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "4.10.0"
},
{
"fixed": "4.14.283"
}
]
},
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "4.15.0"
},
{
"fixed": "4.19.247"
}
]
},
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "4.20.0"
},
{
"fixed": "5.4.198"
}
]
},
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "5.5.0"
},
{
"fixed": "5.10.122"
}
]
},
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "5.11.0"
},
{
"fixed": "5.15.47"
}
]
},
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "5.16.0"
},
{
"fixed": "5.17.15"
}
]
},
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "5.18.0"
},
{
"fixed": "5.18.4"
}
]
}
],
"package": {
"name": "Kernel",
"ecosystem": "Linux"
},
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2022-49315.json"
}
}
],
"modified": "2026-10-28T02:30:33.121536365Z",
"provider": "osv",
"references": [
"https://git.kernel.org/stable/c/08bacf871c019163ccd1389d0bc957a43324967a",
"https://git.kernel.org/stable/c/0f69d7d5e918aa43423d86bd17ddb11b1b5e8ada",
"https://git.kernel.org/stable/c/381045dc64d23a2229c47c5524c06bfc33d34446",
"https://git.kernel.org/stable/c/4681129fda9e8555392eaaadb239ec6a6e2b3e12",
"https://git.kernel.org/stable/c/46c861009bf437a18417df24cea0d181741b7d72",
"https://git.kernel.org/stable/c/64b05fa212c7e4d057676e8b7e7120c6eb2f615b",
"https://git.kernel.org/stable/c/9b6bdbd9337de3917945847bde262a34a87a6303",
"https://git.kernel.org/stable/c/fef451f0fbbe85dbd2962b18379d02e2965610db",
"https://git.kernel.org/stable/c/ffd4c4d5293e4985092ea45ba21cad9326e2e434",
"https://github.com/CVEProject/cvelistV5/tree/main/cves/2022/49xxx/CVE-2022-49315.json",
"https://nvd.nist.gov/vuln/detail/CVE-2022-49315",
"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git"
],
"provider_metadata": {
"cna_assigner": "Linux",
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2022/49xxx/CVE-2022-49315.json"
}
},
"related_cves": [
{
"value": "CVE-2022-49315",
"evidence": "/id"
}
],
"security_relevant": true,
"severity_evidence": "/severity/0/score"
},
"source_id": "core-osv",
"document_id": 500270,
"published_at": "2025-02-26T02:10:43.082+00:00"
}