usb: xhci: Apply the link chain quirk on NEC isoc endpoints
In the Linux kernel, the following vulnerability has been resolved: usb: xhci: Apply the link chain quirk on NEC isoc endpoints Two clearly different specimens of NEC uPD720200 (one with start/stop bug, one without) were seen to cause IOMMU faults after some Missed Service Errors. Faulting address is immediately after a transfer ring segment and patched dynamic debug messages revealed that the MSE was received when waiting for a TD near the end of that segment: [ 1.041954] xhci_hcd: Miss service interval error for slot 1 ep 2 expected TD DMA ffa08fe0 [ 1.042120] xhci_hcd: AMD-Vi: Event logged [IO_PAGE_FAULT domain=0x0005 address=0xffa09000 flags=0x0000] [ 1.042146] xhci_hcd: AMD-Vi: Event logged [IO_PAGE_FAULT domain=0x0005 address=0xffa09040 flags=0x0000] It gets even funnier if the next page is a ring segment accessible to the HC. Below, it reports MSE in segment at ff1e8000, plows through a zero-filled page at ff1e9000 and starts reporting events for TRBs in page at ff1ea000 every microframe, instead of jumping to seg ff1e6000. [ 7.041671] xhci_hcd: Miss service interval error for slot 1 ep 2 expected TD DMA ff1e8fe0 [ 7.041999] xhci_hcd: Miss service interval error for slot 1 ep 2 expected TD DMA ff1e8fe0 [ 7.042011] xhci_hcd: WARN: buffer overrun event for slot 1 ep 2 on endpoint [ 7.042028] xhci_hcd: All TDs skipped for slot 1 ep 2. Clear skip flag. [ 7.042134] xhci_hcd: WARN: buffer overrun event for slot 1 ep 2 on endpoint [ 7.042138] xhci_hcd: ERROR Transfer event TR
- Products
- Kernel
- Affected versions
- Not specified
- Fixed versions
- 5.10.248, 5.15.198, 6.1.160, 6.12.22, 6.13.10, 6.14.1, 6.6.120
- CVEs
- CVE-2025-22022
- Confirmed fixed CVEs
- Not specified
- Updated in this feed
- 4 Nov 2026, 19:05 UTC · Revision 1
Source evidence
usb: xhci: Apply the link chain quirk on NEC isoc endpoints
core-osv · Original sourcePublished 16 Apr 2025, 10:23 UTC
In the Linux kernel, the following vulnerability has been resolved: usb: xhci: Apply the link chain quirk on NEC isoc endpoints Two clearly different specimens of NEC uPD720200 (one with start/stop bug, one without) were seen to cause IOMMU faults after some Missed Service Errors. Faulting address is immediately after a transfer ring segment and patched dynamic debug messages revealed that the MSE was received when waiting for a TD near the end of that segment: [ 1.041954] xhci_hcd: Miss service interval error for slot 1 ep 2 expected TD DMA ffa08fe0 [ 1.042120] xhci_hcd: AMD-Vi: Event logged [IO_PAGE_FAULT domain=0x0005 address=0xffa09000 flags=0x0000] [ 1.042146] xhci_hcd: AMD-Vi: Event logged [IO_PAGE_FAULT domain=0x0005 address=0xffa09040 flags=0x0000] It gets even funnier if the next page is a ring segment accessible to the HC. Below, it reports MSE in segment at ff1e8000, plows through a zero-filled page at ff1e9000 and starts reporting events for TRBs in page at ff1ea000 every microframe, instead of jumping to seg ff1e6000. [ 7.041671] xhci_hcd: Miss service interval error for slot 1 ep 2 expected TD DMA ff1e8fe0 [ 7.041999] xhci_hcd: Miss service interval error for slot 1 ep 2 expected TD DMA ff1e8fe0 [ 7.042011] xhci_hcd: WARN: buffer overrun event for slot 1 ep 2 on endpoint [ 7.042028] xhci_hcd: All TDs skipped for slot 1 ep 2. Clear skip flag. [ 7.042134] xhci_hcd: WARN: buffer overrun event for slot 1 ep 2 on endpoint [ 7.042138] xhci_hcd: ERROR Transfer event TR
osv:CVE-2025-22022
Kernel
Fixed versions: 5.10.248, 5.15.198, 6.1.160, 6.6.120, 6.12.22, 6.13.10, 6.14.1
Complete source record
{
"id": "023015e5a289dccbf7e5cdbad3c9f3aede5dd1b95cf5618d43523e026efc137f",
"url": "https://osv.dev/vulnerability/CVE-2025-22022",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "usb: xhci: Apply the link chain quirk on NEC isoc endpoints",
"summary": "In the Linux kernel, the following vulnerability has been resolved: usb: xhci: Apply the link chain quirk on NEC isoc endpoints Two clearly different specimens of NEC uPD720200 (one with start/stop bug, one without) were seen to cause IOMMU faults after some Missed Service Errors. Faulting address is immediately after a transfer ring segment and patched dynamic debug messages revealed that the MSE was received when waiting for a TD near the end of that segment: [ 1.041954] xhci_hcd: Miss service interval error for slot 1 ep 2 expected TD DMA ffa08fe0 [ 1.042120] xhci_hcd: AMD-Vi: Event logged [IO_PAGE_FAULT domain=0x0005 address=0xffa09000 flags=0x0000] [ 1.042146] xhci_hcd: AMD-Vi: Event logged [IO_PAGE_FAULT domain=0x0005 address=0xffa09040 flags=0x0000] It gets even funnier if the next page is a ring segment accessible to the HC. Below, it reports MSE in segment at ff1e8000, plows through a zero-filled page at ff1e9000 and starts reporting events for TRBs in page at ff1ea000 every microframe, instead of jumping to seg ff1e6000. [ 7.041671] xhci_hcd: Miss service interval error for slot 1 ep 2 expected TD DMA ff1e8fe0 [ 7.041999] xhci_hcd: Miss service interval error for slot 1 ep 2 expected TD DMA ff1e8fe0 [ 7.042011] xhci_hcd: WARN: buffer overrun event for slot 1 ep 2 on endpoint [ 7.042028] xhci_hcd: All TDs skipped for slot 1 ep 2. Clear skip flag. [ 7.042134] xhci_hcd: WARN: buffer overrun event for slot 1 ep 2 on endpoint [ 7.042138] xhci_hcd: ERROR Transfer event TR",
"evidence": "osv:CVE-2025-22022",
"products": [
{
"name": {
"value": "Kernel",
"evidence": "/affected/1/package/name"
},
"prerequisites": [],
"fixed_versions": [
{
"value": "5.10.248",
"evidence": "/affected/1/ranges"
},
{
"value": "5.15.198",
"evidence": "/affected/1/ranges"
},
{
"value": "6.1.160",
"evidence": "/affected/1/ranges"
},
{
"value": "6.6.120",
"evidence": "/affected/1/ranges"
},
{
"value": "6.12.22",
"evidence": "/affected/1/ranges"
},
{
"value": "6.13.10",
"evidence": "/affected/1/ranges"
},
{
"value": "6.14.1",
"evidence": "/affected/1/ranges"
}
],
"affected_versions": []
}
],
"severity": "high",
"structured": {
"id": "CVE-2025-22022",
"aliases": [
"CVE-2025-22022"
],
"metrics": [
{
"type": "CVSS_V3",
"score": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H"
}
],
"affected": [
{
"ranges": [
{
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"type": "GIT",
"events": [
{
"introduced": "7e393a834b41001174a8fb3ae3bc23a749467760"
},
{
"fixed": "abf2df229b6a9172cc1827749c1a446d28e00a2e"
},
{
"fixed": "8b586de6f03c850ff48d42e539b4708d1f3f8f1a"
},
{
"fixed": "1143f790a6316201dc8f067eba4c94ea97ecb6ca"
},
{
"fixed": "dbf427663ce272070d3004b5fca63a4a537d781c"
},
{
"fixed": "a4931d9fb99eb5462f3eaa231999d279c40afb21"
},
{
"fixed": "43a18225150ce874d23b37761c302a5dffee1595"
},
{
"fixed": "061a1683bae6ef56ab8fa392725ba7495515cd1d"
},
{
"fixed": "bb0ba4cb1065e87f9cc75db1fa454e56d0894d01"
}
]
},
{
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"type": "GIT",
"events": [
{
"introduced": "3.0.9"
},
{
"fixed": "3.1"
}
]
},
{
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"type": "GIT",
"events": [
{
"introduced": "3.1.1"
},
{
"fixed": "3.2"
}
]
},
{
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"type": "GIT",
"events": [
{
"introduced": "5c7a6982e976b381595c9d4ee8e8c94564a40aec"
}
]
},
{
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"type": "GIT",
"events": [
{
"introduced": "f12ea4a8ca7009fa2d54794c3fcb8e638453bcff"
}
]
}
],
"versions": [
"v3.0.101",
"v3.0.100",
"v3.0.99",
"v3.0.98",
"v3.0.97",
"v3.0.96",
"v3.0.95",
"v3.0.94",
"v3.0.93",
"v3.0.92",
"v3.0.91",
"v3.0.90",
"v3.0.89",
"v3.0.88",
"v3.0.87",
"v3.0.86",
"v3.0.85",
"v3.0.84",
"v3.0.83",
"v3.0.82",
"v3.0.81",
"v3.0.80",
"v3.0.79",
"v3.0.78",
"v3.0.77",
"v3.0.76",
"v3.0.75",
"v3.0.74",
"v3.0.73",
"v3.0.72",
"v3.0.71",
"v3.0.70",
"v3.0.69",
"v3.0.68",
"v3.0.67",
"v3.0.66",
"v3.0.65",
"v3.0.64",
"v3.0.63",
"v3.0.62",
"v3.0.61",
"v3.0.60",
"v3.0.59",
"v3.0.58",
"v3.0.57",
"v3.0.56",
"v3.0.55",
"v3.0.54",
"v3.0.53",
"v3.0.52",
"v3.0.51",
"v3.0.50",
"v3.0.49",
"v3.0.48",
"v3.0.47",
"v3.0.46",
"v3.0.45",
"v3.0.44",
"v3.0.43",
"v3.0.42",
"v3.0.41",
"v3.0.40",
"v3.0.39",
"v3.0.38",
"v3.0.37",
"v3.0.36",
"v3.0.35",
"v3.0.34",
"v3.0.33",
"v3.0.32",
"v3.0.31",
"v3.0.30",
"v3.0.29",
"v3.0.28",
"v3.0.27",
"v3.0.26",
"v3.0.25",
"v3.0.24",
"v3.0.23",
"v3.0.22",
"v3.0.21",
"v3.0.20",
"v3.0.19",
"v3.0.18",
"v3.0.17",
"v3.0.16",
"v3.0.15",
"v3.0.14",
"v3.0.13",
"v3.0.12",
"v3.0.11",
"v3.0.10",
"v3.0.9",
"v3.1.10",
"v3.1.9",
"v3.1.8",
"v3.1.7",
"v3.1.6",
"v3.1.5",
"v3.1.4",
"v3.1.3",
"v3.1.2",
"v3.1.1"
],
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2025-22022.json"
}
},
{
"ranges": [
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "3.2.0"
},
{
"fixed": "5.10.248"
}
]
},
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "5.11.0"
},
{
"fixed": "5.15.198"
}
]
},
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "5.16.0"
},
{
"fixed": "6.1.160"
}
]
},
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "6.2.0"
},
{
"fixed": "6.6.120"
}
]
},
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "6.7.0"
},
{
"fixed": "6.12.22"
}
]
},
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "6.13.0"
},
{
"fixed": "6.13.10"
}
]
},
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "6.14.0"
},
{
"fixed": "6.14.1"
}
]
}
],
"package": {
"name": "Kernel",
"ecosystem": "Linux"
},
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2025-22022.json"
}
}
],
"modified": "2026-10-28T02:30:38.748720628Z",
"provider": "osv",
"references": [
"https://git.kernel.org/stable/c/061a1683bae6ef56ab8fa392725ba7495515cd1d",
"https://git.kernel.org/stable/c/1143f790a6316201dc8f067eba4c94ea97ecb6ca",
"https://git.kernel.org/stable/c/43a18225150ce874d23b37761c302a5dffee1595",
"https://git.kernel.org/stable/c/8b586de6f03c850ff48d42e539b4708d1f3f8f1a",
"https://git.kernel.org/stable/c/a4931d9fb99eb5462f3eaa231999d279c40afb21",
"https://git.kernel.org/stable/c/abf2df229b6a9172cc1827749c1a446d28e00a2e",
"https://git.kernel.org/stable/c/bb0ba4cb1065e87f9cc75db1fa454e56d0894d01",
"https://git.kernel.org/stable/c/dbf427663ce272070d3004b5fca63a4a537d781c",
"https://github.com/CVEProject/cvelistV5/tree/main/cves/2025/22xxx/CVE-2025-22022.json",
"https://nvd.nist.gov/vuln/detail/CVE-2025-22022",
"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/22xxx/CVE-2025-22022.json"
}
},
"related_cves": [
{
"value": "CVE-2025-22022",
"evidence": "/id"
}
],
"security_relevant": true,
"severity_evidence": "/severity/0/score"
},
"source_id": "core-osv",
"document_id": 505984,
"published_at": "2025-04-16T10:23:27.423+00:00"
}