usb: xhci: bail out of setup if the controller is inaccessible
In the Linux kernel, the following vulnerability has been resolved: usb: xhci: bail out of setup if the controller is inaccessible xhci_gen_setup() locates the operational registers using the capability length read from the very first register: xhci->op_regs = hcd->regs + HC_LENGTH(readl(&xhci->cap_regs->hc_capbase)); If the controller is dead or has dropped off the bus, that read returns ~0, HC_LENGTH() truncates it to 0xff, and op_regs ends up 0xff bytes past the page-aligned MMIO base, i.e. unaligned. The first access through it, xhci_halt() -> xhci_handshake() reading op_regs->status, is then an unaligned readl() on device memory. arm64 faults on unaligned device accesses, so instead of xhci_handshake() catching the all-ones value and returning -ENODEV, setup oopses: xhci-pci-renesas 0005:08:00.0: Unable to change power state from D3cold to D0, device inaccessible xhci-pci-renesas 0005:08:00.0: xHCI Host Controller xhci-pci-renesas 0005:08:00.0: new USB bus registered, assigned bus number 1 Unable to handle kernel paging request at virtual address ffff80030a770103 ESR = 0x0000000096000021 FSC = 0x21: alignment fault Internal error: Oops: 0000000096000021 [#1] SMP pc : xhci_halt [xhci_hcd] Call trace: xhci_halt xhci_gen_setup xhci_pci_setup usb_add_hcd usb_hcd_pci_probe xhci_pci_common_probe xhci_pci_renesas_probe This was hit with a Renesas uPD720201 that failed to power up ("Unable to change power state from D3cold to D0, device inaccessible") yet still reached the HCD p
- Products
- Kernel
- Affected versions
- Not specified
- Fixed versions
- 5.10.273, 5.15.224, 6.1.191, 6.12.111, 6.18.51, 6.6.158, 7.1.13, 7.2.3
- CVEs
- CVE-2026-80861
- Confirmed fixed CVEs
- Not specified
- Updated in this feed
- 2 Nov 2026, 19:41 UTC · Revision 1
Source evidence
usb: xhci: bail out of setup if the controller is inaccessible
core-osv · Original sourcePublished 4 Sept 2026, 15:55 UTC
In the Linux kernel, the following vulnerability has been resolved: usb: xhci: bail out of setup if the controller is inaccessible xhci_gen_setup() locates the operational registers using the capability length read from the very first register: xhci->op_regs = hcd->regs + HC_LENGTH(readl(&xhci->cap_regs->hc_capbase)); If the controller is dead or has dropped off the bus, that read returns ~0, HC_LENGTH() truncates it to 0xff, and op_regs ends up 0xff bytes past the page-aligned MMIO base, i.e. unaligned. The first access through it, xhci_halt() -> xhci_handshake() reading op_regs->status, is then an unaligned readl() on device memory. arm64 faults on unaligned device accesses, so instead of xhci_handshake() catching the all-ones value and returning -ENODEV, setup oopses: xhci-pci-renesas 0005:08:00.0: Unable to change power state from D3cold to D0, device inaccessible xhci-pci-renesas 0005:08:00.0: xHCI Host Controller xhci-pci-renesas 0005:08:00.0: new USB bus registered, assigned bus number 1 Unable to handle kernel paging request at virtual address ffff80030a770103 ESR = 0x0000000096000021 FSC = 0x21: alignment fault Internal error: Oops: 0000000096000021 [#1] SMP pc : xhci_halt [xhci_hcd] Call trace: xhci_halt xhci_gen_setup xhci_pci_setup usb_add_hcd usb_hcd_pci_probe xhci_pci_common_probe xhci_pci_renesas_probe This was hit with a Renesas uPD720201 that failed to power up ("Unable to change power state from D3cold to D0, device inaccessible") yet still reached the HCD p
osv:CVE-2026-80861
Kernel
Fixed versions: 5.10.273, 5.15.224, 6.1.191, 6.6.158, 6.12.111, 6.18.51, 7.1.13, 7.2.3
Complete source record
{
"id": "c2e3ac0cd23d2ea8608ee325d57b6f168eaa31d2efc77d9989b8fe13d757cb0f",
"url": "https://osv.dev/vulnerability/CVE-2026-80861",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "usb: xhci: bail out of setup if the controller is inaccessible",
"summary": "In the Linux kernel, the following vulnerability has been resolved: usb: xhci: bail out of setup if the controller is inaccessible xhci_gen_setup() locates the operational registers using the capability length read from the very first register: xhci->op_regs = hcd->regs + HC_LENGTH(readl(&xhci->cap_regs->hc_capbase)); If the controller is dead or has dropped off the bus, that read returns ~0, HC_LENGTH() truncates it to 0xff, and op_regs ends up 0xff bytes past the page-aligned MMIO base, i.e. unaligned. The first access through it, xhci_halt() -> xhci_handshake() reading op_regs->status, is then an unaligned readl() on device memory. arm64 faults on unaligned device accesses, so instead of xhci_handshake() catching the all-ones value and returning -ENODEV, setup oopses: xhci-pci-renesas 0005:08:00.0: Unable to change power state from D3cold to D0, device inaccessible xhci-pci-renesas 0005:08:00.0: xHCI Host Controller xhci-pci-renesas 0005:08:00.0: new USB bus registered, assigned bus number 1 Unable to handle kernel paging request at virtual address ffff80030a770103 ESR = 0x0000000096000021 FSC = 0x21: alignment fault Internal error: Oops: 0000000096000021 [#1] SMP pc : xhci_halt [xhci_hcd] Call trace: xhci_halt xhci_gen_setup xhci_pci_setup usb_add_hcd usb_hcd_pci_probe xhci_pci_common_probe xhci_pci_renesas_probe This was hit with a Renesas uPD720201 that failed to power up (\"Unable to change power state from D3cold to D0, device inaccessible\") yet still reached the HCD p",
"evidence": "osv:CVE-2026-80861",
"products": [
{
"name": {
"value": "Kernel",
"evidence": "/affected/1/package/name"
},
"prerequisites": [],
"fixed_versions": [
{
"value": "5.10.273",
"evidence": "/affected/1/ranges"
},
{
"value": "5.15.224",
"evidence": "/affected/1/ranges"
},
{
"value": "6.1.191",
"evidence": "/affected/1/ranges"
},
{
"value": "6.6.158",
"evidence": "/affected/1/ranges"
},
{
"value": "6.12.111",
"evidence": "/affected/1/ranges"
},
{
"value": "6.18.51",
"evidence": "/affected/1/ranges"
},
{
"value": "7.1.13",
"evidence": "/affected/1/ranges"
},
{
"value": "7.2.3",
"evidence": "/affected/1/ranges"
}
],
"affected_versions": []
}
],
"severity": "unknown",
"structured": {
"id": "CVE-2026-80861",
"aliases": [
"CVE-2026-80861"
],
"affected": [
{
"ranges": [
{
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"type": "GIT",
"events": [
{
"introduced": "66d4eadd8d067269ea8fead1a50fe87c2979a80d"
},
{
"fixed": "9f8b403d5f8c1ac361533c73fa449153a3c7fc6c"
},
{
"fixed": "15e62f969fecf459a0b873004cc5f4c5a6ba5fcc"
},
{
"fixed": "99e78b54cc3d70e008bd1a30d43e13d652c773e0"
},
{
"fixed": "301f4a3303b21ea959a8294518ee883710498ac2"
},
{
"fixed": "70706dbcf122940f4e3595d7ba1445004cc00074"
},
{
"fixed": "c051f66b621695ad7c8438a9497d79e1f4f05edb"
},
{
"fixed": "bf84c6b0264947794fa783c324a6d874ca6657d8"
},
{
"fixed": "0b31744f70c5e06cce5fb660e02d057a3b9e0e37"
},
{
"fixed": "78203d5b54a40f0e36196ebf31c9c7a380fc8811"
}
]
}
],
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-80861.json"
}
},
{
"ranges": [
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "2.6.31"
},
{
"fixed": "5.10.273"
}
]
},
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "5.11.0"
},
{
"fixed": "5.15.224"
}
]
},
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "5.16.0"
},
{
"fixed": "6.1.191"
}
]
},
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "6.2.0"
},
{
"fixed": "6.6.158"
}
]
},
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "6.7.0"
},
{
"fixed": "6.12.111"
}
]
},
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "6.13.0"
},
{
"fixed": "6.18.51"
}
]
},
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "6.19.0"
},
{
"fixed": "7.1.13"
}
]
},
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "7.2.0"
},
{
"fixed": "7.2.3"
}
]
}
],
"package": {
"name": "Kernel",
"ecosystem": "Linux"
},
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-80861.json"
}
}
],
"modified": "2026-11-01T02:30:33.540540393Z",
"provider": "osv",
"references": [
"https://git.kernel.org/stable/c/0b31744f70c5e06cce5fb660e02d057a3b9e0e37",
"https://git.kernel.org/stable/c/15e62f969fecf459a0b873004cc5f4c5a6ba5fcc",
"https://git.kernel.org/stable/c/301f4a3303b21ea959a8294518ee883710498ac2",
"https://git.kernel.org/stable/c/70706dbcf122940f4e3595d7ba1445004cc00074",
"https://git.kernel.org/stable/c/78203d5b54a40f0e36196ebf31c9c7a380fc8811",
"https://git.kernel.org/stable/c/99e78b54cc3d70e008bd1a30d43e13d652c773e0",
"https://git.kernel.org/stable/c/9f8b403d5f8c1ac361533c73fa449153a3c7fc6c",
"https://git.kernel.org/stable/c/bf84c6b0264947794fa783c324a6d874ca6657d8",
"https://git.kernel.org/stable/c/c051f66b621695ad7c8438a9497d79e1f4f05edb",
"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/80xxx/CVE-2026-80861.json",
"https://nvd.nist.gov/vuln/detail/CVE-2026-80861",
"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/2026/80xxx/CVE-2026-80861.json"
}
},
"related_cves": [
{
"value": "CVE-2026-80861",
"evidence": "/id"
}
],
"security_relevant": true,
"severity_evidence": null
},
"source_id": "core-osv",
"document_id": 489272,
"published_at": "2026-09-04T15:55:15.491+00:00"
}