tty: xilinx_uartps: split sysrq handling
In the Linux kernel, the following vulnerability has been resolved: tty: xilinx_uartps: split sysrq handling lockdep detects the following circular locking dependency: CPU 0 CPU 1 ========================== ============================ cdns_uart_isr() printk() uart_port_lock(port) console_lock() cdns_uart_console_write() if (!port->sysrq) uart_port_lock(port) uart_handle_break() port->sysrq = ... uart_handle_sysrq_char() printk() console_lock() The fixed commit attempts to avoid this situation by only taking the port lock in cdns_uart_console_write if port->sysrq unset. However, if (as shown above) cdns_uart_console_write runs before port->sysrq is set, then it will try to take the port lock anyway. This may result in a deadlock. Fix this by splitting sysrq handling into two parts. We use the prepare helper under the port lock and defer handling until we release the lock.
- Products
- Kernel
- Affected versions
- Not specified
- Fixed versions
- 5.15.179, 6.1.129, 6.12.14, 6.13.3, 6.6.78
- CVEs
- CVE-2025-21820
- Confirmed fixed CVEs
- Not specified
- Updated in this feed
- 4 Nov 2026, 02:53 UTC · Revision 1
Source evidence
In the Linux kernel, the following vulnerability has been resolved: tty: xilinx_uartps: split sysrq handling lockdep detects the following circular locking dependency: CPU 0 CPU 1 ========================== ============================ cdns_uart_isr() printk() uart_port_lock(port) console_lock() cdns_uart_console_write() if (!port->sysrq) uart_port_lock(port) uart_handle_break() port->sysrq = ... uart_handle_sysrq_char() printk() console_lock() The fixed commit attempts to avoid this situation by only taking the port lock in cdns_uart_console_write if port->sysrq unset. However, if (as shown above) cdns_uart_console_write runs before port->sysrq is set, then it will try to take the port lock anyway. This may result in a deadlock. Fix this by splitting sysrq handling into two parts. We use the prepare helper under the port lock and defer handling until we release the lock.
osv:CVE-2025-21820
Kernel
Fixed versions: 5.15.179, 6.1.129, 6.6.78, 6.12.14, 6.13.3
Complete source record
{
"id": "d16d87336d3957f6f6af89c8be20a8bb8017af44aa1d6547078b81da530402f5",
"url": "https://osv.dev/vulnerability/CVE-2025-21820",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "tty: xilinx_uartps: split sysrq handling",
"summary": "In the Linux kernel, the following vulnerability has been resolved: tty: xilinx_uartps: split sysrq handling lockdep detects the following circular locking dependency: CPU 0 CPU 1 ========================== ============================ cdns_uart_isr() printk() uart_port_lock(port) console_lock() cdns_uart_console_write() if (!port->sysrq) uart_port_lock(port) uart_handle_break() port->sysrq = ... uart_handle_sysrq_char() printk() console_lock() The fixed commit attempts to avoid this situation by only taking the port lock in cdns_uart_console_write if port->sysrq unset. However, if (as shown above) cdns_uart_console_write runs before port->sysrq is set, then it will try to take the port lock anyway. This may result in a deadlock. Fix this by splitting sysrq handling into two parts. We use the prepare helper under the port lock and defer handling until we release the lock.",
"evidence": "osv:CVE-2025-21820",
"products": [
{
"name": {
"value": "Kernel",
"evidence": "/affected/1/package/name"
},
"prerequisites": [],
"fixed_versions": [
{
"value": "5.15.179",
"evidence": "/affected/1/ranges"
},
{
"value": "6.1.129",
"evidence": "/affected/1/ranges"
},
{
"value": "6.6.78",
"evidence": "/affected/1/ranges"
},
{
"value": "6.12.14",
"evidence": "/affected/1/ranges"
},
{
"value": "6.13.3",
"evidence": "/affected/1/ranges"
}
],
"affected_versions": []
}
],
"severity": "unknown",
"structured": {
"id": "CVE-2025-21820",
"aliases": [
"CVE-2025-21820"
],
"affected": [
{
"ranges": [
{
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"type": "GIT",
"events": [
{
"introduced": "74ea66d4ca061a3cd4c0e924e51b60e924644852"
},
{
"fixed": "e22a97700901ba5e8bf8db68056a0d50f9440cae"
},
{
"fixed": "de5bd24197bd9ee37ec1e379a3d882bbd15c5065"
},
{
"fixed": "8ea0e7b3d7b8f2f0fc9db491ff22a0abe120801c"
},
{
"fixed": "9b88a7c4584ba67267a051069b8abe44fc9595b2"
},
{
"fixed": "4410dba9807a17a93f649a9f5870ceaf30a675a3"
},
{
"fixed": "b06f388994500297bb91be60ffaf6825ecfd2afe"
}
]
}
],
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2025-21820.json"
}
},
{
"ranges": [
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "4.6.0"
},
{
"fixed": "5.15.179"
}
]
},
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "5.16.0"
},
{
"fixed": "6.1.129"
}
]
},
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "6.2.0"
},
{
"fixed": "6.6.78"
}
]
},
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "6.7.0"
},
{
"fixed": "6.12.14"
}
]
},
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "6.13.0"
},
{
"fixed": "6.13.3"
}
]
}
],
"package": {
"name": "Kernel",
"ecosystem": "Linux"
},
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2025-21820.json"
}
}
],
"modified": "2026-10-28T02:30:32.853172651Z",
"provider": "osv",
"references": [
"https://git.kernel.org/stable/c/4410dba9807a17a93f649a9f5870ceaf30a675a3",
"https://git.kernel.org/stable/c/8ea0e7b3d7b8f2f0fc9db491ff22a0abe120801c",
"https://git.kernel.org/stable/c/9b88a7c4584ba67267a051069b8abe44fc9595b2",
"https://git.kernel.org/stable/c/b06f388994500297bb91be60ffaf6825ecfd2afe",
"https://git.kernel.org/stable/c/de5bd24197bd9ee37ec1e379a3d882bbd15c5065",
"https://git.kernel.org/stable/c/e22a97700901ba5e8bf8db68056a0d50f9440cae",
"https://lists.debian.org/debian-lts-announce/2025/03/msg00028.html",
"https://github.com/CVEProject/cvelistV5/tree/main/cves/2025/21xxx/CVE-2025-21820.json",
"https://nvd.nist.gov/vuln/detail/CVE-2025-21820",
"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/2025/21xxx/CVE-2025-21820.json"
}
},
"related_cves": [
{
"value": "CVE-2025-21820",
"evidence": "/id"
}
],
"security_relevant": true,
"severity_evidence": null
},
"source_id": "core-osv",
"document_id": 499808,
"published_at": "2025-02-27T20:04:17.93+00:00"
}