CVE-2024-57913CWE-362

CVE-2024-57913

Medium · published January 19, 2025

CVSS v3.1
4.7
EPSS
0%
Percentile
7.7
In the wild
Unconfirmed
What it is

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

The record
Technical detail
CVSS v3.1
4.7 · MEDIUM
Vector
CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:N/I:N/A:H
CVSS v4.0
Not supplied
EPSS
0.00185 · 7.7th percentile
Weakness
CWE-362 · Concurrent Execution using Shared Resource with Improper Synchronization ('Race Condition')
Published
2025-01-19T17:15Z
Affected products (12)
ProductVersionsFixed in
linux/linux_kernel≥ 2.6.35, < 5.4.2905.4.290
linux/linux_kernel≥ 5.5, < 5.10.2345.10.234
linux/linux_kernel≥ 5.11, < 5.15.1775.15.177
linux/linux_kernel≥ 5.16, < 6.1.1256.1.125
linux/linux_kernel≥ 6.2, < 6.6.726.6.72
linux/linux_kernel≥ 6.7, < 6.12.106.12.10
linux/linux_kernelall versions—
linux/linux_kernelall versions—
linux/linux_kernelall versions—
linux/linux_kernelall versions—
linux/linux_kernelall versions—
linux/linux_kernelall versions—
References (10)
EPSS history
Timeline
  • 19 JAN 11:52Z
    usb: gadget: f_fs: Remove WARN_ON in functionfs_bind
    cvelistv5