CVE-2024-57913
Published: Jan 19, 2025
Modified: May 12, 2026
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
| Vendor | Product | Versions |
|---|---|---|
Linux | Linux | affected ddf8abd2599491cbad959c700b90ba72a5dce8d0 - < bfe60030fcd976e3546e1f73d6d0eb3fea26442eaffected ddf8abd2599491cbad959c700b90ba72a5dce8d0 - < 3e4d32cc145955d5c56c5498a3ff057e4aafa9d1affected ddf8abd2599491cbad959c700b90ba72a5dce8d0 - < 19fc1c83454ca9d5699e39633ec79ce26355251caffected ddf8abd2599491cbad959c700b90ba72a5dce8d0 - < 82f60f3600aecd9ffcd0fbc4e193694511c85b47affected ddf8abd2599491cbad959c700b90ba72a5dce8d0 - < ea6a1498742430eb2effce0d1439ff29ef37dd7d+2 more versions |
Linux | Linux | affected 2.6.35unaffected 0 - < 2.6.35unaffected 5.4.290 - <= 5.4.*unaffected 5.10.234 - <= 5.10.*unaffected 5.15.177 - <= 5.15.*+4 more versions |
References
Security Training
Train your team to recognize and prevent security threats with our comprehensive security awareness program.
Start TrainingVulnerability Scanning
Discover vulnerabilities in your applications and infrastructure before attackers do.
Scan Now