CVE-2024-57913

Severity CVSS v4.0:
Pending analysis
Type:
CWE-362 Concurrent Execution using Shared Resource with Improper Synchronization ('Race Condition')
Publication date:
19/01/2025
Last modified:
03/11/2025

Description

In the Linux kernel, the following vulnerability has been resolved:<br /> <br /> usb: gadget: f_fs: Remove WARN_ON in functionfs_bind<br /> <br /> This commit addresses an issue related to below kernel panic where<br /> panic_on_warn is enabled. It is caused by the unnecessary use of WARN_ON<br /> in functionsfs_bind, which easily leads to the following scenarios.<br /> <br /> 1.adb_write in adbd 2. UDC write via configfs<br /> ================= =====================<br /> <br /> -&gt;usb_ffs_open_thread() -&gt;UDC write<br /> -&gt;open_functionfs() -&gt;configfs_write_iter()<br /> -&gt;adb_open() -&gt;gadget_dev_desc_UDC_store()<br /> -&gt;adb_write() -&gt;usb_gadget_register_driver_owner<br /> -&gt;driver_register()<br /> -&gt;StartMonitor() -&gt;bus_add_driver()<br /> -&gt;adb_read() -&gt;gadget_bind_driver()<br /> -&gt;configfs_composite_bind()<br /> -&gt;usb_add_function()<br /> -&gt;open_functionfs() -&gt;ffs_func_bind()<br /> -&gt;adb_open() -&gt;functionfs_bind()<br /> state !=FFS_ACTIVE&gt;<br /> <br /> The adb_open, adb_read, and adb_write operations are invoked from the<br /> daemon, but trying to bind the function is a process that is invoked by<br /> UDC write through configfs, which opens up the possibility of a race<br /> condition between the two paths. In this race scenario, the kernel panic<br /> occurs due to the WARN_ON from functionfs_bind when panic_on_warn is<br /> enabled. This commit fixes the kernel panic by removing the unnecessary<br /> WARN_ON.<br /> <br /> Kernel panic - not syncing: kernel: panic_on_warn set ...<br /> [ 14.542395] Call trace:<br /> [ 14.542464] ffs_func_bind+0x1c8/0x14a8<br /> [ 14.542468] usb_add_function+0xcc/0x1f0<br /> [ 14.542473] configfs_composite_bind+0x468/0x588<br /> [ 14.542478] gadget_bind_driver+0x108/0x27c<br /> [ 14.542483] really_probe+0x190/0x374<br /> [ 14.542488] __driver_probe_device+0xa0/0x12c<br /> [ 14.542492] driver_probe_device+0x3c/0x220<br /> [ 14.542498] __driver_attach+0x11c/0x1fc<br /> [ 14.542502] bus_for_each_dev+0x104/0x160<br /> [ 14.542506] driver_attach+0x24/0x34<br /> [ 14.542510] bus_add_driver+0x154/0x270<br /> [ 14.542514] driver_register+0x68/0x104<br /> [ 14.542518] usb_gadget_register_driver_owner+0x48/0xf4<br /> [ 14.542523] gadget_dev_desc_UDC_store+0xf8/0x144<br /> [ 14.542526] configfs_write_iter+0xf0/0x138

Vulnerable products and versions

CPE From Up to
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 2.6.35 (including) 5.4.290 (excluding)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 5.5 (including) 5.10.234 (excluding)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 5.11 (including) 5.15.177 (excluding)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 5.16 (including) 6.1.125 (excluding)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 6.2 (including) 6.6.72 (excluding)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 6.7 (including) 6.12.10 (excluding)
cpe:2.3:o:linux:linux_kernel:6.13:rc1:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.13:rc2:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.13:rc3:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.13:rc4:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.13:rc5:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.13:rc6:*:*:*:*:*:*