Skip to main content

Linux Kernel CVE-2026-64447

| EUVDEUVD-2026-48791 HIGH
Double Free (CWE-415)
2026-07-25 Linux GHSA-q956-6h2r-2rpx
7.8
CVSS 3.1 · Vendor: Linux
Share

Severity by source

Vendor (Linux) PRIMARY
7.8 HIGH
AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
vuln.today AI
7.0 HIGH

Requires Intel IPU7 hardware and engineering specific initialization error paths, making AC:H; local low-privilege session needed; no confidentiality loss distinct from I/A impact.

3.1 AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H
4.0 AV:L/AC:H/AT:P/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
SUSE
5.5 MEDIUM
AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H

Primary rating from Vendor (Linux).

CVSS VectorVendor: Linux

Attack Vector
Local
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
High

Lifecycle Timeline

6
Metadata Corrected
Sep 16, 2026 - 09:40 vuln.today
tag: Information Disclosure removed
Analysis Generated
Jul 27, 2026 - 05:56 vuln.today
CVSS changed
Jul 27, 2026 - 05:22 NVD
7.8 (HIGH)
Patch available
Jul 25, 2026 - 11:18 EUVD
CVE Published
Jul 25, 2026 - 08:51 cve.org
HIGH 7.8
CVE Published
Jul 25, 2026 - 08:51 cve.org
UNKNOWN (no severity yet)

DescriptionCVE.org

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

staging: media: ipu7: fix double-free and use-after-free in error paths

In both ipu7_isys_init() and ipu7_psys_init(), pdata is allocated and then passed to ipu7_bus_initialize_device(), which stores it in adev->pdata. The ipu7_bus_release() function frees adev->pdata when the device's reference count drops to zero.

Two error paths incorrectly call kfree(pdata) after the device teardown has already freed it:

  1. When ipu7_mmu_init() fails: put_device() is called, which drops the

reference count to zero and triggers ipu7_bus_release() -> kfree(pdata). The subsequent kfree(pdata) is a double-free.

  1. When ipu7_bus_add_device() fails: it calls auxiliary_device_uninit()

internally, which calls put_device() -> ipu7_bus_release() -> kfree(pdata). The subsequent kfree(pdata) is again a double-free.

Note that the kfree(pdata) when ipu7_bus_initialize_device() itself fails is correct, because in that case auxiliary_device_init() failed and the release function was never set up, so pdata must be freed manually.

Additionally, the error code was not saved before calling put_device(), causing ERR_CAST() to dereference the already-freed adev pointer when constructing the return value. Fix this by saving the error from dev_err_probe() before put_device() and returning ERR_PTR() instead.

Remove the redundant kfree(pdata) calls and fix the use-after-free in the return values of the two affected error paths.

AnalysisAI

Double-free and use-after-free memory corruption flaws in the Linux kernel's staging Intel IPU7 media driver allow a local low-privileged user to corrupt kernel heap memory during driver initialization error paths. Two functions - ipu7_isys_init() and ipu7_psys_init() - incorrectly call kfree(pdata) after device teardown has already freed the same allocation via the ipu7_bus_release() reference-count path, producing a CWE-415 double-free. A concurrent use-after-free also occurs when ERR_CAST() dereferences the already-freed adev pointer before the function returns. No public exploit code exists and exploitation probability is low (EPSS 0.21%), but the C:H/I:H/A:H impact reflects the theoretical kernel code execution or crash potential.

Technical ContextAI

The affected code resides in drivers/staging/media/intel/ipu7, a staging driver for the Intel IPU7 Image Signal Processor found in Meteor Lake and related Intel SoC platforms. During initialization, both ipu7_isys_init() and ipu7_psys_init() allocate a pdata structure and pass it to ipu7_bus_initialize_device(), which stores the pointer in adev->pdata and registers a release callback (ipu7_bus_release()) that frees adev->pdata when the device reference count reaches zero. Two distinct error paths - the ipu7_mmu_init() failure path and the ipu7_bus_add_device() failure path - each trigger put_device() (or auxiliary_device_uninit() internally), which drops the reference count to zero and fires ipu7_bus_release() -> kfree(pdata). Both paths then execute a second kfree(pdata), constituting a classic CWE-415 double-free. A second class of flaw (use-after-free) occurs because the error code is not saved before put_device() frees adev; ERR_CAST() then dereferences the stale adev pointer. The CPE cpe:2.3:a:linux:linux covers the mainline and stable trees; the driver exists only on kernels incorporating the IPU7 staging merge (from commit b7fe4c0019b12d60ece3e99eeb0ccfd5a1d103e5 onward).

RemediationAI

Vendor-released patches are available. Upgrade to Linux kernel 6.18.39 (stable commit d3a9a8cf2d7fd61a2f63df61f6cbc0a9bb007cc0), 7.1.4 (stable commit b5ddc7257bee71f5b8cf9083e2b0ac0427e9fbb3), or 7.2-rc1 (commit 837c1f9655421055f751ed34745e820a54a27642). Ubuntu users should apply updates per USN-8726-1 (https://ubuntu.com/security/notices/USN-8726-1) or USN-8727-1 (https://ubuntu.com/security/notices/USN-8727-1). As an interim workaround on systems that do not require the Intel IPU7 camera subsystem, unloading or blacklisting the ipu7 staging kernel modules (e.g., adding 'blacklist intel_ipu7' to /etc/modprobe.d/) prevents the vulnerable initialization paths from executing, with the trade-off of losing IPU7 camera functionality. This workaround is effective because the double-free only occurs during module probe.

Vendor StatusVendor

SUSE

Severity: Moderate
Product Status
SUSE Linux Enterprise Desktop 15 SP7 Not-Affected
SUSE Linux Enterprise Desktop 15 SP7 Not-Affected
SUSE Linux Enterprise High Availability Extension 15 SP7 Not-Affected
SUSE Linux Enterprise High Availability Extension 15 SP7 Not-Affected
SUSE Linux Enterprise High Availability Extension 16.0 Not-Affected

Share

CVE-2026-64447 vulnerability details – vuln.today

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy