CVE-2026-93096: cxl/features: Serialize multi-part Get/Set Feature transfers

Published Sep 17, 2026
·
Updated

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

cxl/features: Serialize multi-part Get/Set Feature transfers

A Get or Set Feature payload larger than the mailbox payload size is split into several mailbox commands. mboxmutex only serializes individual mailbox commands and is dropped between iterations of these loops. Nothing serializes the multi-part transfer as a whole. cxlgetfeature() and cxlsetfeature() are reachable concurrently from fwctl (per-fd RPCs run under a read-held registration lock) and from the EDAC scrub/ECS/repair paths, so two transfers to the same mailbox can interleave their parts and corrupt the device's transfer context.

Add a per-mailbox featmutex and hold it across the whole transfer in both functions. It nests outside mboxmutex (which is taken inside cxlinternalsendcmd()), and is taken nowhere else, so no lock-ordering inversion is introduced.

Affected Software

1 affected component
Linux Linux kernel

Event History

Sep 17, 2026
CVE Published
via MITRE·04:11 PM
Data Sourced
via MITRE·04:11 PM
Description

Frequently Asked Questions

1

What conditions are required for this issue to occur?

A Get Feature or Set Feature operation must have a payload larger than the mailbox payload size, causing it to be split into multiple mailbox commands. Concurrent multi-part transfers targeting the same mailbox must then interleave.

2

Which kernel paths can trigger concurrent transfers?

The affected Get/Set Feature functions can be reached through fwctl per-file-descriptor RPCs and through EDAC scrub, ECS, and repair paths. Concurrent activity from these paths can target the same mailbox.

3

What is the impact of an interleaved transfer?

Interleaving parts from two transfers can corrupt the device's transfer context. The issue is specific to serialization of an entire multi-part feature transfer, rather than serialization of individual mailbox commands.

4

What change resolves the issue?

The resolution adds a per-mailbox feat_mutex held for the full duration of cxl_get_feature() and cxl_set_feature() multi-part transfers. This lock is taken outside the existing mbox_mutex, which remains acquired within cxl_internal_send_cmd().

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203