Skip to content
CVE PROGRAM SOURCE RECORDUnscored

CVE-2026-90284

firmware_loader: do not queue completed sysfs fallback requests

Description

In the Linux kernel, the following vulnerability has been resolved: firmware_loader: do not queue completed sysfs fallback requests fw_load_sysfs_fallback() calls device_add() before adding the fw_priv to pending_fw_head. device_add() publishes the fallback loading interface, so a userspace helper which discovers the device by scanning sysfs can write 0 to the loading attribute and complete the request before it is queued as pending. In that interleaving firmware_loading_store() calls fw_state_done() while pending_list still points to itself, so it cannot remove an entry from pending_fw_head. The subsequent unconditional list_add() then queues an already-completed fw_priv. Once the request is released, pending_fw_head can retain a pointer to freed memory and the next fallback request can fault while validating the list. Only in-flight fallback requests need suspend or reboot abort handling. If the request is already DONE after device_add(), return success from the fallback path without sending another uevent, waiting again, or queueing it as pending. This preserves the invariant that pending_fw_head contains only active fallback requests.

Affected products

Version statuses are supplied by the assigning organization. Consult the original record for detailed ranges and platform conditions.

Linux Linux

Default version status: unaffected

  • ecb739cf15a9bae040ce6b60209b78b92512d120 to < c8b97c5130f27b64fa2cfe1aa4bebb13f724c6c7affected
  • 75d95e2e39b27f733f21e6668af1c9893a97de5e to < 93a2385730540105df8524447dcc11309ad280f9affected
  • 75d95e2e39b27f733f21e6668af1c9893a97de5e to < ea33fac0df7fe7b49a4b27acb83e227b82317d1daffected
  • 75d95e2e39b27f733f21e6668af1c9893a97de5e to < 5a250bff75a446374c05622973b18b4ab662b504affected
  • 75d95e2e39b27f733f21e6668af1c9893a97de5e to < 85aeb8fc61839098ae0942ccba86e669c08e75d4affected
  • 75d95e2e39b27f733f21e6668af1c9893a97de5e to < 6eaa632d0ed7bbb84f9cb670e5ec4e2cecf4cc7baffected
  • 75d95e2e39b27f733f21e6668af1c9893a97de5e to < fb4824880b0dba0e7b3a497c46c642f979630392affected
  • 75d95e2e39b27f733f21e6668af1c9893a97de5e to < b48373c901951fad1a26bd7c33ad91172b3945b5affected
  • 67cf0fbcac0d42d4d4686cddc1e39f465bbfec37affected
  • d09639528b66b5c7c20dc8f7fb8928aacabd40bbaffected
  • c14a54675db7131791402fa22fb0fa6da1f5fb66affected
  • 5.10.58 to < 5.10.270affected
  • 4.19.203 to < 4.20affected
  • 5.4.140 to < 5.5affected
  • 5.13.10 to < 5.14affected

Linux Linux

Default version status: affected

  • 5.14affected
  • 0 to < 5.14unaffected
  • 5.10.270 to ≤ 5.10.*unaffected
  • 5.15.221 to ≤ 5.15.*unaffected
  • 6.1.188 to ≤ 6.1.*unaffected
  • 6.6.157 to ≤ 6.6.*unaffected
  • 6.12.110 to ≤ 6.12.*unaffected
  • 6.18.52 to ≤ 6.18.*unaffected
  • 7.2.6 to ≤ 7.2.*unaffected
  • 7.3 to ≤ *unaffected

References