# CVE-2026-68456: usb: atm: ueagle-atm: wait for pre-firmware load in .disconnect()

Status: published. Published: 2026-08-15. Updated: 2026-11-06.

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

usb: atm: ueagle-atm: wait for pre-firmware load in .disconnect()

ueagle-atm uses the asynchronous request_firmware_nowait() in .probe(),
but does not wait for its completion, not even in .disconnect(); so, if the
device is unplugged meanwhile, its teardown runs concurrently with that.

Even though this inconsistency is worth addressing on its own, it has also
triggered several bug reports in syzbot over the years (some auto-closed)
where the firmware sysfs fallback mechanism (CONFIG_FW_LOADER_USER_HELPER)
creates a firmware subdirectory in the device directory during its removal,
which might hit unexpected conditions in kernfs, apparently, depending at
which point the add and remove operations raced. (See links.)

The pattern is:

usb ?-?: Direct firmware load for ueagle-atm/eagle?.fw failed with error -2
usb ?-?: Falling back to sysfs fallback for: ueagle-atm/eagle?.fw
<ERROR>
Call trace:
 ...
 kernfs_create_dir_ns
 sysfs_create_dir_ns
 create_dir
 kobject_add_internal
 kobject_add_varg
 kobject_add
 class_dir_create_and_add
 get_device_parent
 device_add
 fw_load_sysfs_fallback
 fw_load_from_user_helper
 firmware_fallback_sysfs
 _request_firmware
 request_firmware_work_func
 ...

(Some variations are observed, after fw_load_sysfs_fallback(), e.g., [1].)

While the kernfs side is being looked at, the ueagle-atm side can be fixed
by waiting for the pre-firmware load in the .disconnect() handler.

This change has a similar approach to previous work by Andrey Tsygunka [2]
(wait_for_completion() in .disconnect()), but it is relatively different in
design/implementation; using the Originally-by tag for credit assignment.

This has been tested with:
- synthetic reproducer to check the error path;
- USB gadget (virtual device) to check the firmware upload path;
- QEMU device emulator to check the device ID re-enumeration path;
(The latter two were written by Claude; no other code/text in this commit.)

Links (year first reported):
 2025 https://syzbot.org/bug?extid=ce1e5a1b4e086b43e56d
 2025 https://syzbot.org/bug?extid=9af8471255ac36e34fd4
 2024 https://syzbot.org/bug?extid=306212936b13e520679d
 2023 https://syzkaller.appspot.com/bug?extid=457452d30bcdda75ead2
 2022 https://syzbot.org/bug?extid=782984d6f1701b526edb
 2021 https://syzbot.org/bug?id=f3f221579f4ef7e9691281f3c6f56c05f83e8490
 2021 https://syzbot.org/bug?id=84d86f0d71394829df6fc53daf6642c045983881
 2021 https://syzbot.org/bug?id=3302dc1c0e2b9c94f2e8edb404eabc9267bc6f90

[1] https://syzkaller.appspot.com/bug?extid=457452d30bcdda75ead2
[2] https://lore.kernel.org/lkml/20250410093146.3776801-2-aitsygunka@yandex.ru/

## Remediation

No remediation reported in collected sources

## Affected products and versions

- Linux / Linux: ≥ b72458a80c75cab832248f536412f386e20a93a0; < d85f19aaef42a03e3e4765d659c761c8750a7f23 (affected, git); ≥ b72458a80c75cab832248f536412f386e20a93a0; < 76861031b43a18065d13f9ffb8595d25c7576005 (affected, git); ≥ b72458a80c75cab832248f536412f386e20a93a0; < bbfedc84714064ea4845e6b76f96316eb5bb65d8 (affected, git); ≥ b72458a80c75cab832248f536412f386e20a93a0; < f2a6abc670104fc3e383ee3b1cf35c070485e3df (affected, git); ≥ b72458a80c75cab832248f536412f386e20a93a0; < c581e30ae5b332d8acef64475a211b3f82099941 (affected, git); ≥ b72458a80c75cab832248f536412f386e20a93a0; < 509b51327320bdeaef1969248177a446ded073ab (affected, git); ≥ b72458a80c75cab832248f536412f386e20a93a0; < ddcdac47e1f2651c7be60e299f98faf981522797 (affected, git); ≥ b72458a80c75cab832248f536412f386e20a93a0; < e2674dfbed8a30d57e2bc872c4bfa6c3eec918bf (affected, git). Source: CNA: Linux
- Linux / Linux: 2.6.16 (affected); ≥ 0; < 2.6.16 (unaffected, semver); ≥ 5.10.261; ≤ 5.10.* (unaffected, semver); ≥ 5.15.212; ≤ 5.15.* (unaffected, semver); ≥ 6.1.178; ≤ 6.1.* (unaffected, semver); ≥ 6.6.145; ≤ 6.6.* (unaffected, semver); ≥ 6.12.97; ≤ 6.12.* (unaffected, semver); ≥ 6.18.40; ≤ 6.18.* (unaffected, semver); ≥ 7.1.5; ≤ 7.1.* (unaffected, semver); ≥ 7.2; ≤ * (unaffected, original_commit_for_fix). Source: CNA: Linux

## Severity and prioritization

- CISA KEV: No listing in collected sources

- EPSS: 0.18% as of 2026-11-06; percentile 7.21%

- SSVC: exploitation none; automatable no; technical impact partial; source ADP: CISA-ADP

- Weaknesses: Not reported

## Exploit evidence

No exploit evidence in collected sources. This is not proof of no exploitation.

## References

- https://git.kernel.org/stable/c/d85f19aaef42a03e3e4765d659c761c8750a7f23 (CNA: Linux)

- https://git.kernel.org/stable/c/76861031b43a18065d13f9ffb8595d25c7576005 (CNA: Linux)

- https://git.kernel.org/stable/c/bbfedc84714064ea4845e6b76f96316eb5bb65d8 (CNA: Linux)

- https://git.kernel.org/stable/c/f2a6abc670104fc3e383ee3b1cf35c070485e3df (CNA: Linux)

- https://git.kernel.org/stable/c/c581e30ae5b332d8acef64475a211b3f82099941 (CNA: Linux)

- https://git.kernel.org/stable/c/509b51327320bdeaef1969248177a446ded073ab (CNA: Linux)

- https://git.kernel.org/stable/c/ddcdac47e1f2651c7be60e299f98faf981522797 (CNA: Linux)

- https://git.kernel.org/stable/c/e2674dfbed8a30d57e2bc872c4bfa6c3eec918bf (CNA: Linux)

- https://git.kernel.org/stable/c/509b51327320bdeaef1969248177a446ded073ab (416baaa9-dc9f-4396-8d5f-8c081fb06d67)

- https://git.kernel.org/stable/c/76861031b43a18065d13f9ffb8595d25c7576005 (416baaa9-dc9f-4396-8d5f-8c081fb06d67)

- https://git.kernel.org/stable/c/bbfedc84714064ea4845e6b76f96316eb5bb65d8 (416baaa9-dc9f-4396-8d5f-8c081fb06d67)

- https://git.kernel.org/stable/c/c581e30ae5b332d8acef64475a211b3f82099941 (416baaa9-dc9f-4396-8d5f-8c081fb06d67)

- https://git.kernel.org/stable/c/d85f19aaef42a03e3e4765d659c761c8750a7f23 (416baaa9-dc9f-4396-8d5f-8c081fb06d67)

- https://git.kernel.org/stable/c/ddcdac47e1f2651c7be60e299f98faf981522797 (416baaa9-dc9f-4396-8d5f-8c081fb06d67)

- https://git.kernel.org/stable/c/e2674dfbed8a30d57e2bc872c4bfa6c3eec918bf (416baaa9-dc9f-4396-8d5f-8c081fb06d67)

- https://git.kernel.org/stable/c/f2a6abc670104fc3e383ee3b1cf35c070485e3df (416baaa9-dc9f-4396-8d5f-8c081fb06d67)

## Provenance

- CNA: Linux: https://www.cve.org/CVERecord?id=CVE-2026-68456; retrieved 2026-11-06; source updated 2026-11-06

- NVD: https://nvd.nist.gov/vuln/detail/CVE-2026-68456; retrieved 2026-11-06; source updated 2026-11-06

- FIRST EPSS: https://api.first.org/data/v1/epss?cve=CVE-2026-68456; retrieved 2026-11-06; source updated Not reported

Revision: eea9dc3eaf62b98ad065d0ff0c7d900ca11e104b58bf9907fcf40dabab3c1a66

Canonical: https://y2.dev/cve/CVE-2026-68456

## Agent and API access

Public CVE pages, Markdown, and JSON are free to read without an account or API key.

- Public catalog: https://y2.dev/cve/index.json. Follow nextCursor with the same search, filters, sort, and limit (1–100). A null cursor marks the end.

- WebMCP: search_cve_disclosures, get_cve_disclosure, get_cve_page_markdown, get_y2_cve_access. Available in compatible browsers.

- Cyber API: https://api.y2.dev/api/v2/cyber/cves and https://api.y2.dev/api/v2/cyber/cves/{cveId}.

- Y2 Pro or Elite: create a workspace API key with the intel:cyber scope and send Authorization: Bearer <Y2_API_KEY>. Setup: https://y2.dev/docs/api/create-key.

- x402: Pay per request without an account or API key. Omit Authorization, read the HTTP 402 PAYMENT-REQUIRED challenge, validate its current requirements, and retry with PAYMENT-SIGNATURE through an authorized payment client. These browser tools never make payments. Guide: https://y2.dev/docs/api/x402.

- OpenAPI: https://y2.dev/api/openapi.yaml. Agent access metadata: https://y2.dev/cve/agent.json.

Collected public records only. Check source status for coverage and freshness.