CVE-2024-57913

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
Configurations

Configuration 1 (hide)

OR cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
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:*:*:*:*:*:*

History

27 Feb 2025, 21:59

Type Values Removed Values Added
CPE cpe:2.3:o:linux:linux_kernel:6.13:rc5:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.13:rc4:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.13:rc2:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.13:rc1:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.13:rc6:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.13:rc3:*:*:*:*:*:*
CWE CWE-362
CVSS v2 : unknown
v3 : unknown
v2 : unknown
v3 : 4.7
First Time Linux linux Kernel
Linux
References () https://git.kernel.org/stable/c/19fc1c83454ca9d5699e39633ec79ce26355251c - () https://git.kernel.org/stable/c/19fc1c83454ca9d5699e39633ec79ce26355251c - Patch
References () https://git.kernel.org/stable/c/3e4d32cc145955d5c56c5498a3ff057e4aafa9d1 - () https://git.kernel.org/stable/c/3e4d32cc145955d5c56c5498a3ff057e4aafa9d1 - Patch
References () https://git.kernel.org/stable/c/82f60f3600aecd9ffcd0fbc4e193694511c85b47 - () https://git.kernel.org/stable/c/82f60f3600aecd9ffcd0fbc4e193694511c85b47 - Patch
References () https://git.kernel.org/stable/c/a8b6a18b9b66cc4c016d63132b59ce5383f7cdd2 - () https://git.kernel.org/stable/c/a8b6a18b9b66cc4c016d63132b59ce5383f7cdd2 - Patch
References () https://git.kernel.org/stable/c/bfe60030fcd976e3546e1f73d6d0eb3fea26442e - () https://git.kernel.org/stable/c/bfe60030fcd976e3546e1f73d6d0eb3fea26442e - Patch
References () https://git.kernel.org/stable/c/dfc51e48bca475bbee984e90f33fdc537ce09699 - () https://git.kernel.org/stable/c/dfc51e48bca475bbee984e90f33fdc537ce09699 - Patch
References () https://git.kernel.org/stable/c/ea6a1498742430eb2effce0d1439ff29ef37dd7d - () https://git.kernel.org/stable/c/ea6a1498742430eb2effce0d1439ff29ef37dd7d - Patch

02 Feb 2025, 11:15

Type Values Removed Values Added
References
  • () https://git.kernel.org/stable/c/3e4d32cc145955d5c56c5498a3ff057e4aafa9d1 -
  • () https://git.kernel.org/stable/c/bfe60030fcd976e3546e1f73d6d0eb3fea26442e -

23 Jan 2025, 17:15

Type Values Removed Values Added
Summary
  • (es) En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: usb: gadget: f_fs: eliminar WARN_ON en functionfs_bind Esta confirmación soluciona un problema relacionado con el pánico del kernel que se muestra a continuación, donde panic_on_warn está habilitado. Es causado por el uso innecesario de WARN_ON en functionsfs_bind, lo que fácilmente conduce a los siguientes escenarios. 1.adb_write en adbd 2. Escritura de UDC a través de configfs ================= ====================== -&gt;usb_ffs_open_thread() -&gt;Escritura de UDC -&gt;open_functionfs() -&gt;configfs_write_iter() -&gt;adb_open() -&gt;gadget_dev_desc_UDC_store() -&gt;adb_write() -&gt;usb_gadget_register_driver_owner -&gt;driver_register() -&gt;StartMonitor() -&gt;bus_add_driver() -&gt;adb_read() -&gt;gadget_bind_driver() -&gt;configfs_composite_bind() -&gt;usb_add_function() -&gt;open_functionfs() -&gt;ffs_func_bind() -&gt;adb_open() -&gt;functionfs_bind() state !=FFS_ACTIVE&gt; Las operaciones adb_open, adb_read y adb_write se invocan desde el daemon, pero intentar vincular la función es un proceso que se invoca mediante escritura UDC a través de configfs, lo que abre la posibilidad de una condición de ejecución entre las dos rutas. En este escenario de ejecución, el pánico del kernel se produce debido al WARN_ON de functionfs_bind cuando panic_on_warn está habilitado. Esta confirmación corrige el pánico del kernel eliminando el WARN_ON innecesario. Pánico del núcleo: no se sincroniza: núcleo: panic_on_warn establecido ... [ 14.542395] Seguimiento de llamadas: [ 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] controlador_probe_device+0x3c/0x220 [ 14.542498] __driver_attach+0x11c/0x1fc [ 14.542502] bus_for_each_dev+0x104/0x160 [ 14.542506] controlador_attach+0x24/0x34 [ 14.542510] bus_add_driver+0x154/0x270 [ 14.542514] controlador_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
References
  • () https://git.kernel.org/stable/c/19fc1c83454ca9d5699e39633ec79ce26355251c -

19 Jan 2025, 12:15

Type Values Removed Values Added
New CVE

Information

Published : 2025-01-19 12:15

Updated : 2025-02-27 21:59


NVD link : CVE-2024-57913

Mitre link : CVE-2024-57913

CVE.ORG link : CVE-2024-57913


JSON object : View

Products Affected

linux

  • linux_kernel
CWE
CWE-362

Concurrent Execution using Shared Resource with Improper Synchronization ('Race Condition')