Skip to content
Heist/ feed
Back to feed
HighFix available

veth: fix NAPI leak in XDP enable error path

Type: advisorySources: OSV

In the Linux kernel, the following vulnerability has been resolved: veth: fix NAPI leak in XDP enable error path During XDP enablement in veth, if xdp_rxq_info_reg() or xdp_rxq_info_reg_mem_model() fails, the driver rolls back the changes. However, the rollback loop: for (i--; i >= start; i--) { decrements the loop index 'i' before the first iteration. This correctly skips unregistering the rxq for the failed index 'i' (as registration failed or was already cleaned up), but it also erroneously skips calling netif_napi_deli() for rq[i].xdp_napi. Since netif_napi_add() was already called for index 'i', this leaves a dangling napi_struct in the device's napi_list. When the veth device is later destroyed, the freed queue memory (which contains the leaked NAPI structure) can be reused. The subsequent device teardown iterates the NAPI list and corrupts the reallocated memory, leading to UAF. Fix this by explicitly deleting the NAPI association for the failed index 'i' before rolling back the successfully configured queues.

Products
Kernel
Affected versions
Not specified
Fixed versions
5.15.212, 6.1.178, 6.12.97, 6.18.40, 6.6.145, 7.1.5
CVEs
CVE-2026-80613
Confirmed fixed CVEs
Not specified
Updated in this feed
3 Nov 2026, 15:38 UTC · Revision 1

Source evidence

veth: fix NAPI leak in XDP enable error path

core-osv · Original source

Published 28 Aug 2026, 06:48 UTC

In the Linux kernel, the following vulnerability has been resolved: veth: fix NAPI leak in XDP enable error path During XDP enablement in veth, if xdp_rxq_info_reg() or xdp_rxq_info_reg_mem_model() fails, the driver rolls back the changes. However, the rollback loop: for (i--; i >= start; i--) { decrements the loop index 'i' before the first iteration. This correctly skips unregistering the rxq for the failed index 'i' (as registration failed or was already cleaned up), but it also erroneously skips calling netif_napi_deli() for rq[i].xdp_napi. Since netif_napi_add() was already called for index 'i', this leaves a dangling napi_struct in the device's napi_list. When the veth device is later destroyed, the freed queue memory (which contains the leaked NAPI structure) can be reused. The subsequent device teardown iterates the NAPI list and corrupts the reallocated memory, leading to UAF. Fix this by explicitly deleting the NAPI association for the failed index 'i' before rolling back the successfully configured queues.

osv:CVE-2026-80613

Kernel

Fixed versions: 5.15.212, 6.1.178, 6.6.145, 6.12.97, 6.18.40, 7.1.5

Complete source record
{
  "id": "55ad3a14f514718bddfb851d5ce7d59c5302cb0d031d9031e16594d149a1411d",
  "url": "https://osv.dev/vulnerability/CVE-2026-80613",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "veth: fix NAPI leak in XDP enable error path",
    "summary": "In the Linux kernel, the following vulnerability has been resolved: veth: fix NAPI leak in XDP enable error path During XDP enablement in veth, if xdp_rxq_info_reg() or xdp_rxq_info_reg_mem_model() fails, the driver rolls back the changes. However, the rollback loop: for (i--; i >= start; i--) { decrements the loop index 'i' before the first iteration. This correctly skips unregistering the rxq for the failed index 'i' (as registration failed or was already cleaned up), but it also erroneously skips calling netif_napi_deli() for rq[i].xdp_napi. Since netif_napi_add() was already called for index 'i', this leaves a dangling napi_struct in the device's napi_list. When the veth device is later destroyed, the freed queue memory (which contains the leaked NAPI structure) can be reused. The subsequent device teardown iterates the NAPI list and corrupts the reallocated memory, leading to UAF. Fix this by explicitly deleting the NAPI association for the failed index 'i' before rolling back the successfully configured queues.",
    "evidence": "osv:CVE-2026-80613",
    "products": [
      {
        "name": {
          "value": "Kernel",
          "evidence": "/affected/1/package/name"
        },
        "prerequisites": [],
        "fixed_versions": [
          {
            "value": "5.15.212",
            "evidence": "/affected/1/ranges"
          },
          {
            "value": "6.1.178",
            "evidence": "/affected/1/ranges"
          },
          {
            "value": "6.6.145",
            "evidence": "/affected/1/ranges"
          },
          {
            "value": "6.12.97",
            "evidence": "/affected/1/ranges"
          },
          {
            "value": "6.18.40",
            "evidence": "/affected/1/ranges"
          },
          {
            "value": "7.1.5",
            "evidence": "/affected/1/ranges"
          }
        ],
        "affected_versions": []
      }
    ],
    "severity": "high",
    "structured": {
      "id": "CVE-2026-80613",
      "aliases": [
        "CVE-2026-80613"
      ],
      "metrics": [
        {
          "type": "CVSS_V3",
          "score": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
              "type": "GIT",
              "events": [
                {
                  "introduced": "b02e5a0ebb172c8276cea3151942aac681f7a4a6"
                },
                {
                  "fixed": "fc51373345e7e6ea73da2650cb497309c50b077a"
                },
                {
                  "fixed": "4559770b2a241344d762719e674241fcc8528f02"
                },
                {
                  "fixed": "83090f5e7b54721d71875a6c224d2490b9e73050"
                },
                {
                  "fixed": "d3eb258ad398cc9402bab3a5e730cd7c5b34efad"
                },
                {
                  "fixed": "a9e6707322ef215d39d4655b176c094f45f0ab52"
                },
                {
                  "fixed": "4bd2e5dbe62334aae1182d0f0d260f334a49d739"
                },
                {
                  "fixed": "6739027cb72da26890edd424c77080d187b2a92e"
                }
              ]
            }
          ],
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-80613.json"
          }
        },
        {
          "ranges": [
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "5.11.0"
                },
                {
                  "fixed": "5.15.212"
                }
              ]
            },
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "5.16.0"
                },
                {
                  "fixed": "6.1.178"
                }
              ]
            },
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "6.2.0"
                },
                {
                  "fixed": "6.6.145"
                }
              ]
            },
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "6.7.0"
                },
                {
                  "fixed": "6.12.97"
                }
              ]
            },
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "6.13.0"
                },
                {
                  "fixed": "6.18.40"
                }
              ]
            },
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "6.19.0"
                },
                {
                  "fixed": "7.1.5"
                }
              ]
            }
          ],
          "package": {
            "name": "Kernel",
            "ecosystem": "Linux"
          },
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-80613.json"
          }
        }
      ],
      "modified": "2026-10-28T02:30:30.052780756Z",
      "provider": "osv",
      "references": [
        "https://git.kernel.org/stable/c/4559770b2a241344d762719e674241fcc8528f02",
        "https://git.kernel.org/stable/c/4bd2e5dbe62334aae1182d0f0d260f334a49d739",
        "https://git.kernel.org/stable/c/6739027cb72da26890edd424c77080d187b2a92e",
        "https://git.kernel.org/stable/c/83090f5e7b54721d71875a6c224d2490b9e73050",
        "https://git.kernel.org/stable/c/a9e6707322ef215d39d4655b176c094f45f0ab52",
        "https://git.kernel.org/stable/c/d3eb258ad398cc9402bab3a5e730cd7c5b34efad",
        "https://git.kernel.org/stable/c/fc51373345e7e6ea73da2650cb497309c50b077a",
        "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/80xxx/CVE-2026-80613.json",
        "https://nvd.nist.gov/vuln/detail/CVE-2026-80613",
        "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git"
      ],
      "provider_metadata": {
        "cna_assigner": "Linux",
        "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/80xxx/CVE-2026-80613.json"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-80613",
        "evidence": "/id"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/severity/0/score"
  },
  "source_id": "core-osv",
  "document_id": 496896,
  "published_at": "2026-08-28T06:48:35.127+00:00"
}