Skip to main content
← All vulnerabilities
CVE-2026-53325

agp/amd64: Fix broken error propagation in agp_amd64_probe()

Published
Last modified
published
Not listed in CISA KEV
Fix
Fixed in 5.10.260, 5.15.211, 6.1.177, 6.6.144, 6.12.95, and 3 more
None on Exploit-DB, Metasploit or GitHub

Summary

In the Linux kernel, the following vulnerability has been resolved: agp/amd64: Fix broken error propagation in agp_amd64_probe() A NULL pointer dereference was observed in the AMD64 AGP driver when running in a virtualized environment (e.g. qemu/kvm) without a physical AMD northbridge. The crash occurs in amd64_fetch_size() when attempting to dereference the pointer returned by node_to_amd_nb(0). The root cause of this crash is broken error propagation in agp_amd64_probe(): When no AMD northbridges are found, cache_nbs() correctly returns -ENODEV. However, the probe function erroneously checks the return value against exactly -1, rather than < 0. As a result, the hardware absence error is masked, allowing the driver to improperly proceed with initialization. It eventually calls agp_add_bridge(), which invokes amd64_fetch_size(). Since the hardware does not exist, node_to_amd_nb(0) returns NULL, leading to a General Protection Fault (GPF) when accessing its ->misc member. Fix the issue by correcting the error check in agp_amd64_probe() to abort properly when cache_nbs() returns any negative error code. This prevents the driver from erroneously proceeding without hardware, thereby avoiding the subsequent NULL pointer dereference at its source.

Timeline

  1. CVE published
  2. Record last updated

Affected versions

  • Linux Linux

    From a32073bffc656ca4bde6002b6cf7c1a8e0e22712 · fixed in ce800993af477fc24187349c6a20d3073140b759; From a32073bffc656ca4bde6002b6cf7c1a8e0e22712 · fixed in 1d7d45050e14083c1de1460c93f4063c1f0bca7b; From a32073bffc656ca4bde6002b6cf7c1a8e0e22712 · fixed in 3e844a63668d1c3d10a9d347d7ebf161b2f91c84; From a32073bffc656ca4bde6002b6cf7c1a8e0e22712 · fixed in eb045714bc6a2bbb0befb7a31b996a196e188869; From a32073bffc656ca4bde6002b6cf7c1a8e0e22712 · fixed in 564b3b3f6565313eb6fa5355ffd037d6fb27897f; From a32073bffc656ca4bde6002b6cf7c1a8e0e22712 · fixed in 53483a9f4ee9eeb18aa866ec16cce79e136987e1; From a32073bffc656ca4bde6002b6cf7c1a8e0e22712 · fixed in 0aa9b27c454c53074cde592eaceb442d30341585; From a32073bffc656ca4bde6002b6cf7c1a8e0e22712 · fixed in cefe535a60a2e00e09f4b2689b0c8ffc6912459a; From a32073bffc656ca4bde6002b6cf7c1a8e0e22712 · fixed in b08472db93b1ccff84a7adec5779d47f0e9d3a30

  • Linux Linux

    2.6.18

  • KernelLinux

    From 2.6.18 · fixed in 5.10.260; From 5.11.0 · fixed in 5.15.211; From 5.16.0 · fixed in 6.1.177; From 6.2.0 · fixed in 6.6.144; From 6.7.0 · fixed in 6.12.95; From 6.13.0 · fixed in 6.18.37; From 6.19.0 · fixed in 7.0.14; From 7.1.0 · fixed in 7.1.2

References 9

git.kernel.org