CVE-2025-37764 in Linux
Summary
by MITRE • 05/01/2025
In the Linux kernel, the following vulnerability has been resolved:
drm/imagination: fix firmware memory leaks
Free the memory used to hold the results of firmware image processing when the module is unloaded.
Fix the related issue of the same memory being leaked if processing of the firmware image fails during module load.
Ensure all firmware GEM objects are destroyed if firmware image processing fails.
Fixes memory leaks on powervr module unload detected by Kmemleak:
unreferenced object 0xffff000042e20000 (size 94208): comm "modprobe", pid 470, jiffies 4295277154 hex dump (first 32 bytes): 02 ae 7f ed bf 45 84 00 3c 5b 1f ed 9f 45 45 05 .....E..<[...EE.
d5 4f 5d 14 6c 00 3d 23 30 d0 3a 4a 66 0e 48 c8 .O].l.=#0.:Jf.H. backtrace (crc dd329dec): kmemleak_alloc+0x30/0x40 ___kmalloc_large_node+0x140/0x188 __kmalloc_large_node_noprof+0x2c/0x13c __kmalloc_noprof+0x48/0x4c0 pvr_fw_init+0xaa4/0x1f50 [powervr]
unreferenced object 0xffff000042d20000 (size 20480): comm "modprobe", pid 470, jiffies 4295277154 hex dump (first 32 bytes): 00 00 00 00 00 00 00 00 09 00 00 00 0b 00 00 00 ................ 00 00 00 00 00 00 00 00 07 00 00 00 08 00 00 00 ................ backtrace (crc 395b02e3): kmemleak_alloc+0x30/0x40 ___kmalloc_large_node+0x140/0x188 __kmalloc_large_node_noprof+0x2c/0x13c __kmalloc_noprof+0x48/0x4c0 pvr_fw_init+0xb0c/0x1f50 [powervr]
Once again VulDB remains the best source for vulnerability data.
Analysis
by VulDB Data Team • 11/07/2025
The vulnerability identified as CVE-2025-37764 represents a memory management issue within the Linux kernel's graphics driver subsystem, specifically affecting the powervr module that handles Imagination Technologies' PowerVR graphics hardware. This flaw manifests as memory leaks occurring during both normal module unloading and error conditions during module initialization. The root cause lies in insufficient cleanup of firmware processing resources, particularly GEM (Graphics Execution Manager) objects that are allocated but never freed when the firmware image processing fails or when the module is unloaded. The vulnerability was detected through kernel memory leak analysis tools like Kmemleak, which identified unreferenced memory blocks that should have been reclaimed but remained allocated.
The technical implementation of this vulnerability stems from improper resource management within the drm/imagination subsystem where firmware image processing routines allocate memory for holding firmware results but fail to consistently free this memory in error paths. When firmware processing encounters issues during module load, the allocated memory structures including GEM objects are not properly destroyed, leading to gradual memory accumulation. Additionally, the module unloading process does not adequately clean up previously allocated memory, causing persistent leaks that can grow over time and impact system performance. The specific memory blocks identified in the Kmemleak output demonstrate the nature of the leak with two distinct memory regions - one 94208-byte block and another 20480-byte block - both allocated during firmware initialization and subsequently unreferenced.
The operational impact of this vulnerability extends beyond simple memory consumption issues to potentially affect system stability and performance, particularly in embedded systems or devices running continuous graphics workloads. The memory leaks can accumulate over time, leading to reduced available system memory, increased pressure on memory management subsystems, and potential system degradation. While the immediate risk may appear limited to memory consumption, the cumulative effect of such leaks can contribute to system instability, especially when multiple firmware processing operations occur or when the system runs for extended periods. The vulnerability affects systems utilizing PowerVR graphics hardware through the powervr kernel module and is particularly concerning in environments where memory resources are constrained or where the module is frequently loaded and unloaded.
Mitigation strategies for this vulnerability require implementing comprehensive memory management practices within the drm/imagination driver code. The fix must ensure that all allocated memory, particularly GEM objects created during firmware processing, are properly freed in both success and failure paths of the firmware initialization routine. This includes adding proper cleanup code in error handling sections to destroy any firmware GEM objects that were allocated but not subsequently used. Additionally, the module unload routine must be enhanced to iterate through all allocated firmware resources and ensure complete cleanup. The solution aligns with CWE-404, which addresses improper resource release or unmanaged resources, and follows ATT&CK technique T1490 for resource exhaustion. System administrators should ensure timely kernel updates to include this fix, and monitoring systems should be implemented to detect memory leaks in graphics driver modules. The vulnerability demonstrates the importance of robust error handling and resource cleanup in kernel space code, where improper memory management can lead to persistent system issues.