CVE-2026-90284 PUBLISHED

firmware_loader: do not queue completed sysfs fallback requests

Assigner: Linux
Reserved: 11.09.2026 Published: 17.09.2026 Updated: 17.09.2026

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.

Product Status

Vendor Linux
Product Linux
Versions Default: unaffected
  • affected from ecb739cf15a9bae040ce6b60209b78b92512d120 to c8b97c5130f27b64fa2cfe1aa4bebb13f724c6c7 (excl.)
  • affected from 75d95e2e39b27f733f21e6668af1c9893a97de5e to 93a2385730540105df8524447dcc11309ad280f9 (excl.)
  • affected from 75d95e2e39b27f733f21e6668af1c9893a97de5e to ea33fac0df7fe7b49a4b27acb83e227b82317d1d (excl.)
  • affected from 75d95e2e39b27f733f21e6668af1c9893a97de5e to 5a250bff75a446374c05622973b18b4ab662b504 (excl.)
  • affected from 75d95e2e39b27f733f21e6668af1c9893a97de5e to 85aeb8fc61839098ae0942ccba86e669c08e75d4 (excl.)
  • affected from 75d95e2e39b27f733f21e6668af1c9893a97de5e to 6eaa632d0ed7bbb84f9cb670e5ec4e2cecf4cc7b (excl.)
  • affected from 75d95e2e39b27f733f21e6668af1c9893a97de5e to fb4824880b0dba0e7b3a497c46c642f979630392 (excl.)
  • affected from 75d95e2e39b27f733f21e6668af1c9893a97de5e to b48373c901951fad1a26bd7c33ad91172b3945b5 (excl.)
  • Version 67cf0fbcac0d42d4d4686cddc1e39f465bbfec37 is affected
  • Version d09639528b66b5c7c20dc8f7fb8928aacabd40bb is affected
  • Version c14a54675db7131791402fa22fb0fa6da1f5fb66 is affected
  • affected from 5.10.58 to 5.10.270 (excl.)
  • affected from 4.19.203 to 4.20 (excl.)
  • affected from 5.4.140 to 5.5 (excl.)
  • affected from 5.13.10 to 5.14 (excl.)
Vendor Linux
Product Linux
Versions Default: affected
  • Version 5.14 is affected
  • unaffected from 0 to 5.14 (excl.)
  • unaffected from 5.10.270 to 5.10.* (incl.)
  • unaffected from 5.15.221 to 5.15.* (incl.)
  • unaffected from 6.1.188 to 6.1.* (incl.)
  • unaffected from 6.6.157 to 6.6.* (incl.)
  • unaffected from 6.12.110 to 6.12.* (incl.)
  • unaffected from 6.18.52 to 6.18.* (incl.)
  • unaffected from 7.2.6 to 7.2.* (incl.)
  • unaffected from 7.3-rc1 to * (incl.)

References