CVE-2025-37905

Source
https://cve.org/CVERecord?id=CVE-2025-37905
Import Source
https://storage.googleapis.com/osv-test-cve-osv-conversion/osv-output/CVE-2025-37905.json
JSON Data
https://api.test.osv.dev/v1/vulns/CVE-2025-37905
Downstream
Related
Published
2025-05-20T15:21:38.890Z
Modified
2026-05-18T05:59:29.487432464Z
Summary
firmware: arm_scmi: Balance device refcount when destroying devices
Details

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

firmware: arm_scmi: Balance device refcount when destroying devices

Using devicefindchild() to lookup the proper SCMI device to destroy causes an unbalance in device refcount, since devicefindchild() calls an implicit get_device(): this, in turns, inhibits the call of the provided release methods upon devices destruction.

As a consequence, one of the structures that is not freed properly upon destruction is the internal struct device_private dev->p populated by the drivers subsystem core.

KMemleak detects this situation since loading/unloding some SCMI driver causes related devices to be created/destroyed without calling any device_release method.

unreferenced object 0xffff00000f583800 (size 512): comm "insmod", pid 227, jiffies 4294912190 hex dump (first 32 bytes): 00 00 00 00 ad 4e ad de ff ff ff ff 00 00 00 00 .....N.......... ff ff ff ff ff ff ff ff 60 36 1d 8a 00 80 ff ff ........`6...... backtrace (crc 114e2eed): kmemleak_alloc+0xbc/0xd8 __kmalloccachenoprof+0x2dc/0x398 deviceadd+0x954/0x12d0 deviceregister+0x28/0x40 _scmidevicecreate.part.0+0x1bc/0x380 scmidevicecreate+0x2d0/0x390 scmicreateprotocoldevices+0x74/0xf8 scmidevicerequestnotifier+0x1f8/0x2a8 notifiercallchain+0x110/0x3b0 blockingnotifiercallchain+0x70/0xb0 scmidriverregister+0x350/0x7f0 0xffff80000a3b3038 dooneinitcall+0x12c/0x730 doinitmodule+0x1dc/0x640 loadmodule+0x4b20/0x5b70 initmodulefromfile+0xec/0x158

$ ./scripts/faddr2line ./vmlinux deviceadd+0x954/0x12d0 deviceadd+0x954/0x12d0: kmallocnoprof at include/linux/slab.h:901 (inlined by) kzallocnoprof at include/linux/slab.h:1037 (inlined by) deviceprivateinit at drivers/base/core.c:3510 (inlined by) device_add at drivers/base/core.c:3561

Balance device refcount by issuing a putdevice() on devices found via devicefind_child().

Database specific
{
    "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2025/37xxx/CVE-2025-37905.json",
    "cna_assigner": "Linux"
}
References

Affected packages

Git / git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git

Affected ranges

Type
GIT
Repo
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
Events
Introduced
d4f9dddd21f39395c62ea12d3d91239637d4805f
Fixed
91ff1e9652fb9beb0174267d6bb38243dff211bb
Fixed
ff4273d47da81b95ed9396110bcbd1b7b7470fe8
Fixed
2fbf6c9695ad9f05e7e5c166bf43fac7cb3276b3
Fixed
969d8beaa2e374387bf9aa5602ef84fc50bb48d8
Fixed
8a8a3547d5c4960da053df49c75bf623827a25da
Fixed
9ca67840c0ddf3f39407339624cef824a4f27599

Database specific

source
"https://storage.googleapis.com/osv-test-cve-osv-conversion/osv-output/CVE-2025-37905.json"

Linux / Kernel

Package

Name
Kernel

Affected ranges

Type
ECOSYSTEM
Events
Introduced
5.13.0
Fixed
5.15.182
Type
ECOSYSTEM
Events
Introduced
5.16.0
Fixed
6.1.138
Type
ECOSYSTEM
Events
Introduced
6.2.0
Fixed
6.6.90
Type
ECOSYSTEM
Events
Introduced
6.7.0
Fixed
6.12.28
Type
ECOSYSTEM
Events
Introduced
6.13.0
Fixed
6.14.6

Database specific

source
"https://storage.googleapis.com/osv-test-cve-osv-conversion/osv-output/CVE-2025-37905.json"