CVE-2026-68456: usb: atm: ueagle-atm: wait for pre-firmware load in .disconnect()
Greg Kroah-Hartman <[email protected]>
| Newsgroups | org.kernel.vger.linux-cve-announce |
|---|---|
| Message-ID | <2026081502-CVE-2026-68456-0655@gregkh> |
From: Greg Kroah-Hartman <[email protected]> Description =========== 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/[email protected]/ The Linux kernel CVE team has assigned CVE-2026-68456 to this issue. Affected and fixed versions =========================== Issue introduced in 2.6.16 with commit b72458a80c75cab832248f536412f386e20a93a0 and fixed in 5.10.261 with commit d85f19aaef42a03e3e4765d659c761c8750a7f23 Issue introduced in 2.6.16 with commit b72458a80c75cab832248f536412f386e20a93a0 and fixed in 5.15.212 with commit 76861031b43a18065d13f9ffb8595d25c7576005 Issue introduced in 2.6.16 with commit b72458a80c75cab832248f536412f386e20a93a0 and fixed in 6.1.178 with commit bbfedc84714064ea4845e6b76f96316eb5bb65d8 Issue introduced in 2.6.16 with commit b72458a80c75cab832248f536412f386e20a93a0 and fixed in 6.6.145 with commit f2a6abc670104fc3e383ee3b1cf35c070485e3df Issue introduced in 2.6.16 with commit b72458a80c75cab832248f536412f386e20a93a0 and fixed in 6.12.97 with commit c581e30ae5b332d8acef64475a211b3f82099941 Issue introduced in 2.6.16 with commit b72458a80c75cab832248f536412f386e20a93a0 and fixed in 6.18.40 with commit 509b51327320bdeaef1969248177a446ded073ab Issue introduced in 2.6.16 with commit b72458a80c75cab832248f536412f386e20a93a0 and fixed in 7.1.5 with commit ddcdac47e1f2651c7be60e299f98faf981522797 Issue introduced in 2.6.16 with commit b72458a80c75cab832248f536412f386e20a93a0 and fixed in 7.2-rc3 with commit e2674dfbed8a30d57e2bc872c4bfa6c3eec918bf Please see https://www.kernel.org for a full list of currently supported kernel versions by the kernel community. Unaffected versions might change over time as fixes are backported to older supported kernel versions. The official CVE entry at https://cve.org/CVERecord/?id=CVE-2026-68456 will be updated if fixes are backported, please check that for the most up to date information about this issue. Affected files ============== The file(s) affected by this issue are: drivers/usb/atm/ueagle-atm.c Mitigation ========== The Linux kernel CVE team recommends that you update to the latest stable kernel version for this, and many other bugfixes. Individual changes are never tested alone, but rather are part of a larger kernel release. Cherry-picking individual commits is not recommended or supported by the Linux kernel community at all. If however, updating to the latest release is impossible, the individual changes to resolve this issue can be found at these commits: https://git.kernel.org/stable/c/d85f19aaef42a03e3e4765d659c761c8750a7f23 https://git.kernel.org/stable/c/76861031b43a18065d13f9ffb8595d25c7576005 https://git.kernel.org/stable/c/bbfedc84714064ea4845e6b76f96316eb5bb65d8 https://git.kernel.org/stable/c/f2a6abc670104fc3e383ee3b1cf35c070485e3df https://git.kernel.org/stable/c/c581e30ae5b332d8acef64475a211b3f82099941 https://git.kernel.org/stable/c/509b51327320bdeaef1969248177a446ded073ab https://git.kernel.org/stable/c/ddcdac47e1f2651c7be60e299f98faf981522797 https://git.kernel.org/stable/c/e2674dfbed8a30d57e2bc872c4bfa6c3eec918bf