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

uio: uio_pci_generic_sva: fix double free of devm_kzalloc() memory

uio_pci_sva allocates struct uio_pci_sva_dev with devm_kzalloc() in
probe(), but then calls kfree(udev) both on the probe() error path
(label out_free) and again in remove().

Because devm_kzalloc() allocations are devres-managed and are freed
automatically when the device is detached (including after a failing
probe() and during driver unbind), the explicit kfree() can lead to a
double free.

If probe() fails after devm_kzalloc(), the error path frees udev and
devres cleanup will free it again when the core unwinds the partially
bound device. On normal driver removal, remove() frees udev and devres
will free it again when the device is detached.

This issue was identified by a static analysis tool I developed and
confirmed by manual review. Fix by removing the manual kfree() calls
and dropping the now-unused label.
Published: 2026-07-19
Score: n/a
EPSS: < 1% Very Low
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

The vulnerability originates from a double free of memory allocated with devm_kzalloc() in the uio_pci_generic_sva driver. The driver frees this memory manually during a failed probe and again when the module is removed, while devm_kzalloc() allocations are automatically released by the device resource framework. This duplicate deallocation can corrupt the kernel heap, potentially allowing an attacker to gain arbitrary kernel execution. The flaw is a classic instance of CWE‑1341 double free.

Affected Systems

Any Linux kernel that includes the uio_pci_generic_sva driver, including all mainstream kernel releases prior to the commit that removed the manual kfree() calls. The driver is part of the ubiquitous uio subsystem, so any distribution that builds the Linux kernel with this module enabled is potentially vulnerable.

Risk and Exploitability

The EPSS score is below 1 %, indicating a very low predicted exploit frequency, and the flaw is not listed in CISA’s KEV catalog. Because the damage occurs only when a process can trigger the driver’s probe or removal routines, the attack vector is local: privilege escalation or denial of service by an adversary with root or module load rights. No public CVSS score is available, but a successful exploitation of this double free could lead to arbitrary code execution in the kernel space.

Generated by OpenCVE AI on August 4, 2026 at 18:20 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Apply the kernel patch that incorporates commit e344865bfca4eb37ed8d7ac5917226e49fcec7ce or f74c8696f14149d5e43cc28b015326a759c48f00 to eliminate the double free.
  • If updating the kernel is not immediately feasible, block the uio_pci_generic_sva module from loading by adding it to a module blacklist or disabling the driver in the kernel configuration.
  • Restrict privileged users from loading or probing devices that would activate the driver’s probe or removal routines, and monitor system logs for attempts to bind the driver to detect potential misuse.

Generated by OpenCVE AI on August 4, 2026 at 18:20 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Ubuntu USN Ubuntu USN USN-8593-1 Linux kernel vulnerabilities
Ubuntu USN Ubuntu USN USN-8603-1 Linux kernel (Azure) vulnerabilities
Ubuntu USN Ubuntu USN USN-8618-1 Linux kernel vulnerabilities
History

Wed, 22 Jul 2026 00:15:00 +0000


Sun, 19 Jul 2026 15:30:00 +0000

Type Values Removed Values Added
Description In the Linux kernel, the following vulnerability has been resolved: uio: uio_pci_generic_sva: fix double free of devm_kzalloc() memory uio_pci_sva allocates struct uio_pci_sva_dev with devm_kzalloc() in probe(), but then calls kfree(udev) both on the probe() error path (label out_free) and again in remove(). Because devm_kzalloc() allocations are devres-managed and are freed automatically when the device is detached (including after a failing probe() and during driver unbind), the explicit kfree() can lead to a double free. If probe() fails after devm_kzalloc(), the error path frees udev and devres cleanup will free it again when the core unwinds the partially bound device. On normal driver removal, remove() frees udev and devres will free it again when the device is detached. This issue was identified by a static analysis tool I developed and confirmed by manual review. Fix by removing the manual kfree() calls and dropping the now-unused label.
Title uio: uio_pci_generic_sva: fix double free of devm_kzalloc() memory
First Time appeared Linux
Linux linux Kernel
CPEs cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
Vendors & Products Linux
Linux linux Kernel
References

Subscriptions

Linux Linux Kernel
cve-icon MITRE

Status: PUBLISHED

Assigner: Linux

Published:

Updated: 2026-07-19T14:55:13.652Z

Reserved: 2026-07-19T07:54:57.020Z

Link: CVE-2026-63907

cve-icon Vulnrichment

No data.

cve-icon NVD

No data.

cve-icon Redhat

Severity :

Publid Date: 2026-07-19T00:00:00Z

Links: CVE-2026-63907 - Bugzilla

cve-icon OpenCVE Enrichment

Updated: 2026-08-04T18:30:12Z

Weaknesses
  • CWE-1341

    Multiple Releases of Same Resource or Handle