CVE-2025-39937

Summary

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

net: rfkill: gpio: Fix crash due to dereferencering uninitialized pointer

Since commit 7d5e9737efda ("net: rfkill: gpio: get the name and type from device property") rfkill_find_type() gets called with the possibly uninitialized "const char *type_name;" local variable.

On x86 systems when rfkill-gpio binds to a "BCM4752" or "LNV4752" acpi_device, the rfkill->type is set based on the ACPI acpi_device_id:

    rfkill->type = (unsigned)id->driver_data;

and there is no "type" property so device_property_read_string() will fail and leave type_name uninitialized, leading to a potential crash.

rfkill_find_type() does accept a NULL pointer, fix the potential crash by initializing type_name to NULL.

Note likely sofar this has not been caught because:

  1. Not many x86 machines actually have a "BCM4752"/"LNV4752" acpi_device
  2. The stack happened to contain NULL where type_name is stored

Affected Software

VendorProductVersion RangeStatus
LinuxLinux7d5e9737efda16535e5b54bd627ef4881d11d31f < 184f608a68f96794e8fe58cd5535014d53622cdeaffected
LinuxLinux7d5e9737efda16535e5b54bd627ef4881d11d31f < 8793e7a8e1b60131a825457174ed6398111daeb7affected
LinuxLinux7d5e9737efda16535e5b54bd627ef4881d11d31f < ada2282259243387e6b6e89239aeb4897e62f051affected
LinuxLinux7d5e9737efda16535e5b54bd627ef4881d11d31f < 47ade5f9d70b23a119ec20b1c6504864b2543a79affected
LinuxLinux7d5e9737efda16535e5b54bd627ef4881d11d31f < 689aee35ce671aab752f159e5c8e66d7685e6887affected
LinuxLinux7d5e9737efda16535e5b54bd627ef4881d11d31f < 21ba85d9d508422ca9e6698463ff9357c928c22daffected
LinuxLinux7d5e9737efda16535e5b54bd627ef4881d11d31f < 21a39b958b4bcf44f7674bfbbe1bbb8cad0d842daffected
LinuxLinux7d5e9737efda16535e5b54bd627ef4881d11d31f < b6f56a44e4c1014b08859dcf04ed246500e310e5affected
LinuxLinux4.6affected
LinuxLinux0 < 4.6unaffected
LinuxLinux5.4.300 <= 5.4.*unaffected
LinuxLinux5.10.245 <= 5.10.*unaffected
LinuxLinux5.15.194 <= 5.15.*unaffected
LinuxLinux6.1.154 <= 6.1.*unaffected
LinuxLinux6.6.108 <= 6.6.*unaffected
LinuxLinux6.12.49 <= 6.12.*unaffected
LinuxLinux6.16.9 <= 6.16.*unaffected
LinuxLinux6.17 <= *unaffected

Weaknesses

References