In the Linux kernel, the following vulnerability has been resolved:
usb: xhci: Fix invalid pointer dereference in Etron workaround
This check is performed before preparetransfer() and preparering(), so enqueue can already point at the final link TRB of a segment. And indeed it will, some 0.4% of times this code is called.
Then enqueue + 1 is an invalid pointer. It will crash the kernel right away or load some junk which may look like a link TRB and cause the real link TRB to be replaced with a NOOP. This wouldn't end well.
Use a functionally equivalent test which doesn't dereference the pointer and always gives correct result.
Something has crashed my machine twice in recent days while playing with an Etron HC, and a control transfer stress test ran for confirmation has just crashed it again. The same test passes with this patch applied.
[
{
"signature_version": "v1",
"id": "CVE-2025-37813-135e8fc4",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@0624e29c595b05e7a0e6d1c368f0a05799928e30",
"signature_type": "Line",
"target": {
"file": "drivers/usb/host/xhci-ring.c"
},
"deprecated": false,
"digest": {
"threshold": 0.9,
"line_hashes": [
"120699262237453266412523265955805035494",
"264678532833745628391644375806611236497",
"266148931276755247006973375569365997222",
"139533591641065951936016350512997756559"
]
}
},
{
"signature_version": "v1",
"id": "CVE-2025-37813-162eac02",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@1ea050da5562af9b930d17cbbe9632d30f5df43a",
"signature_type": "Line",
"target": {
"file": "drivers/usb/host/xhci-ring.c"
},
"deprecated": false,
"digest": {
"threshold": 0.9,
"line_hashes": [
"120699262237453266412523265955805035494",
"264678532833745628391644375806611236497",
"266148931276755247006973375569365997222",
"139533591641065951936016350512997756559"
]
}
},
{
"signature_version": "v1",
"id": "CVE-2025-37813-1fcf2b6d",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@142273a49f2c315eabdbdf5a71c15e479b75ca91",
"signature_type": "Line",
"target": {
"file": "drivers/usb/host/xhci-ring.c"
},
"deprecated": false,
"digest": {
"threshold": 0.9,
"line_hashes": [
"120699262237453266412523265955805035494",
"264678532833745628391644375806611236497",
"266148931276755247006973375569365997222",
"139533591641065951936016350512997756559"
]
}
},
{
"signature_version": "v1",
"id": "CVE-2025-37813-6be9f9bf",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@bce3055b08e303e28a8751f6073066f5c33a0744",
"signature_type": "Line",
"target": {
"file": "drivers/usb/host/xhci-ring.c"
},
"deprecated": false,
"digest": {
"threshold": 0.9,
"line_hashes": [
"120699262237453266412523265955805035494",
"264678532833745628391644375806611236497",
"266148931276755247006973375569365997222",
"139533591641065951936016350512997756559"
]
}
},
{
"signature_version": "v1",
"id": "CVE-2025-37813-9867cc2e",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@0624e29c595b05e7a0e6d1c368f0a05799928e30",
"signature_type": "Function",
"target": {
"function": "xhci_queue_ctrl_tx",
"file": "drivers/usb/host/xhci-ring.c"
},
"deprecated": false,
"digest": {
"function_hash": "79112688053628647036301528957861693875",
"length": 2601.0
}
},
{
"signature_version": "v1",
"id": "CVE-2025-37813-cd799452",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@1ea050da5562af9b930d17cbbe9632d30f5df43a",
"signature_type": "Function",
"target": {
"function": "xhci_queue_ctrl_tx",
"file": "drivers/usb/host/xhci-ring.c"
},
"deprecated": false,
"digest": {
"function_hash": "79112688053628647036301528957861693875",
"length": 2601.0
}
},
{
"signature_version": "v1",
"id": "CVE-2025-37813-de8d18dc",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@bce3055b08e303e28a8751f6073066f5c33a0744",
"signature_type": "Function",
"target": {
"function": "xhci_queue_ctrl_tx",
"file": "drivers/usb/host/xhci-ring.c"
},
"deprecated": false,
"digest": {
"function_hash": "311411365277794134590698389209116631588",
"length": 2607.0
}
},
{
"signature_version": "v1",
"id": "CVE-2025-37813-e2985659",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@142273a49f2c315eabdbdf5a71c15e479b75ca91",
"signature_type": "Function",
"target": {
"function": "xhci_queue_ctrl_tx",
"file": "drivers/usb/host/xhci-ring.c"
},
"deprecated": false,
"digest": {
"function_hash": "151044064273110216971311246739842440963",
"length": 2626.0
}
}
]