CVE-2026-43455

mctp: route: hold key->lock in mctp_flow_prepare_output()

published May 8, 2026

CVSS
—
EPSS
0%
Percentile
5.1
In the wild
Unconfirmed
What it is

In the Linux kernel, the following vulnerability has been resolved:

mctp: route: hold key->lock in mctp_flow_prepare_output()

mctp_flow_prepare_output() checks key->dev and may call

mctp_dev_set_key(), but it does not hold key->lock while doing so.

mctp_dev_set_key() and mctp_dev_release_key() are annotated with

__must_hold(&key->lock), so key->dev access is intended to be

serialized by key->lock. The mctp_sendmsg() transmit path reaches

mctp_flow_prepare_output() via mctp_local_output() -> mctp_dst_output()

without holding key->lock, so the check-and-set sequence is racy.

Example interleaving:

CPU0 CPU1

---- ----

mctp_flow_prepare_output(key, devA)

if (!key->dev) // sees NULL

mctp_flow_prepare_output(

key, devB)

if (!key->dev) // still NULL

mctp_dev_set_key(devB, key)

mctp_dev_hold(devB)

key->dev = devB

mctp_dev_set_key(devA, key)

mctp_dev_hold(devA)

key->dev = devA // overwrites devB

Now both devA and devB references were acquired, but only the final

key->dev value is tracked for release. One reference can be lost,

causing a resource leak as mctp_dev_release_key() would only decrease

the reference on one dev.

Fix by taking key->lock around the key->dev check and

mctp_dev_set_key() call.

The record
Technical detail
CVSS
Not scored
CVSS v4.0
Not supplied
EPSS
0.00162 · 5.1th percentile
Published
2026-05-08T14:22Z
EPSS history
Timeline
  • 08 MAY 14:22Z
    mctp: route: hold key->lock in mctp_flow_prepare_output()
    cvelistv5