CVE-2024-57913

usb: gadget: f_fs: Remove WARN_ON in functionfs_bind

State
Published
Severity
4.7 Medium
Published
Jan 19, 2025
Updated
Oct 15, 2026
Reserved
Jan 19, 2025

Read the record on cve.org

Description

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

usb: gadget: f_fs: Remove WARN_ON in functionfs_bind

This commit addresses an issue related to below kernel panic where panic_on_warn is enabled. It is caused by the unnecessary use of WARN_ON in functionsfs_bind, which easily leads to the following scenarios.

1.adb_write in adbd 2. UDC write via configfs ================= =====================

->usb_ffs_open_thread() ->UDC write ->open_functionfs() ->configfs_write_iter() ->adb_open() ->gadget_dev_desc_UDC_store() ->adb_write() ->usb_gadget_register_driver_owner ->driver_register() ->StartMonitor() ->bus_add_driver() ->adb_read() ->gadget_bind_driver() <times-out without BIND event> ->configfs_composite_bind() ->usb_add_function() ->open_functionfs() ->ffs_func_bind() ->adb_open() ->functionfs_bind() <ffs->state !=FFS_ACTIVE>

The adb_open, adb_read, and adb_write operations are invoked from the daemon, but trying to bind the function is a process that is invoked by UDC write through configfs, which opens up the possibility of a race condition between the two paths. In this race scenario, the kernel panic occurs due to the WARN_ON from functionfs_bind when panic_on_warn is enabled. This commit fixes the kernel panic by removing the unnecessary WARN_ON.

Kernel panic - not syncing: kernel: panic_on_warn set ... [ 14.542395] Call trace: [ 14.542464] ffs_func_bind+0x1c8/0x14a8 [ 14.542468] usb_add_function+0xcc/0x1f0 [ 14.542473] configfs_composite_bind+0x468/0x588 [ 14.542478] gadget_bind_driver+0x108/0x27c [ 14.542483] really_probe+0x190/0x374 [ 14.542488] __driver_probe_device+0xa0/0x12c [ 14.542492] driver_probe_device+0x3c/0x220 [ 14.542498] __driver_attach+0x11c/0x1fc [ 14.542502] bus_for_each_dev+0x104/0x160 [ 14.542506] driver_attach+0x24/0x34 [ 14.542510] bus_add_driver+0x154/0x270 [ 14.542514] driver_register+0x68/0x104 [ 14.542518] usb_gadget_register_driver_owner+0x48/0xf4 [ 14.542523] gadget_dev_desc_UDC_store+0xf8/0x144 [ 14.542526] configfs_write_iter+0xf0/0x138

Scores

CVSSScoreVectorSource
3.14.7 MediumCVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:N/I:N/A:HCISA-ADP

Weaknesses

  • CWE-362 Concurrent Execution using Shared Resource with Improper Synchronization ('Race Condition')

Affected Products

ProductVersions
LinuxLinux
  • ddf8abd2599491cbad959c700b90ba72a5dce8d0 to before bfe60030fcd976e3546e1f73d6d0eb3fea26442eAffected
  • ddf8abd2599491cbad959c700b90ba72a5dce8d0 to before 3e4d32cc145955d5c56c5498a3ff057e4aafa9d1Affected
  • ddf8abd2599491cbad959c700b90ba72a5dce8d0 to before 19fc1c83454ca9d5699e39633ec79ce26355251cAffected
  • ddf8abd2599491cbad959c700b90ba72a5dce8d0 to before 82f60f3600aecd9ffcd0fbc4e193694511c85b47Affected
  • ddf8abd2599491cbad959c700b90ba72a5dce8d0 to before ea6a1498742430eb2effce0d1439ff29ef37dd7dAffected
  • ddf8abd2599491cbad959c700b90ba72a5dce8d0 to before a8b6a18b9b66cc4c016d63132b59ce5383f7cdd2Affected
  • ddf8abd2599491cbad959c700b90ba72a5dce8d0 to before dfc51e48bca475bbee984e90f33fdc537ce09699Affected
LinuxLinux
  • 2.6.35Affected
  • before 2.6.35Not affected
  • 5.4.290 through 5.4.*Not affected
  • 5.10.234 through 5.10.*Not affected
  • 5.15.177 through 5.15.*Not affected
  • 6.1.125 through 6.1.*Not affected
  • 6.6.72 through 6.6.*Not affected
  • 6.12.10 through 6.12.*Not affected
  • 6.13 and laterNot affected

References

Every record here comes from the CVE Program’s CVE List. © 1999–2026 The MITRE Corporation. CVE is a registered trademark of The MITRE Corporation. The records are reproduced under the CVE Program terms of use.