← Back to CVE Explorer

CVE-2026-98035

Full vulnerability record from the local CVENow database.

Description

In the Linux kernel, the following vulnerability has been resolved: bpf: Cancel special fields when recycling rhtab elements rhtab_map_update_existing() and rhtab_delete_elem() call bpf_obj_free_fields() when replacing or deleting a value. These map operations can run from BPF programs in NMI context, where releasing a referenced kptr or another complex field is not generally safe. Array and hash maps avoid that problem by cancelling only the asynchronous fields which can be stopped safely in the caller context. Other ownership state remains attached to the allocation until its memory allocator destructor performs the final cleanup. Use bpf_obj_cancel_fields() for the corresponding rhtab paths as well. This cancels timers, workqueues, and task work while allowing rhtab_mem_dtor() to release referenced kptrs when the allocation is eventually destroyed. [ kkd: Rebased, used direct helper calls, and rewrote the commit log ]

Severity
Not scored
CVSS score
Not available
Vulnerability status
Received
Source identifier
416baaa9-dc9f-4396-8d5f-8c081fb06d67
Published
2026-09-25 11:17:32.237000
Last modified
2026-10-19 10:17:57.480000
View original CVE JSON
{
  "id": "CVE-2026-98035",
  "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
  "published": "2026-09-25T11:17:32.237",
  "lastModified": "2026-10-19T10:17:57.480",
  "vulnStatus": "Received",
  "cveTags": [],
  "descriptions": [
    {
      "lang": "en",
      "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nbpf: Cancel special fields when recycling rhtab elements\n\nrhtab_map_update_existing() and rhtab_delete_elem() call\nbpf_obj_free_fields() when replacing or deleting a value. These map\noperations can run from BPF programs in NMI context, where releasing a\nreferenced kptr or another complex field is not generally safe.\n\nArray and hash maps avoid that problem by cancelling only the asynchronous\nfields which can be stopped safely in the caller context. Other ownership\nstate remains attached to the allocation until its memory allocator\ndestructor performs the final cleanup.\n\nUse bpf_obj_cancel_fields() for the corresponding rhtab paths as well. This\ncancels timers, workqueues, and task work while allowing rhtab_mem_dtor() to\nrelease referenced kptrs when the allocation is eventually destroyed.\n\n[ kkd: Rebased, used direct helper calls, and rewrote the commit log ]"
    }
  ],
  "affected": [
    {
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
      "affectedData": [
        {
          "vendor": "Linux",
          "product": "Linux",
          "defaultStatus": "unaffected",
          "programFiles": [
            "kernel/bpf/hashtab.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "versions": [
            {
              "version": "6905f8601298ecd2d1932a4b4849bf265201118e",
              "lessThan": "28fde1356dbc35e20a9f22a5ee65af09698fdf92",
              "versionType": "git",
              "status": "affected"
            },
            {
              "version": "6905f8601298ecd2d1932a4b4849bf265201118e",
              "lessThan": "65cc95eba9e8b46312cac38c227473605a4b996a",
              "versionType": "git",
              "status": "affected"
            }
          ]
        },
        {
          "vendor": "Linux",
          "product": "Linux",
          "defaultStatus": "affected",
          "programFiles": [
            "kernel/bpf/hashtab.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "versions": [
            {
              "version": "7.2",
              "status": "affected"
            },
            {
              "version": "0",
              "lessThan": "7.2",
              "versionType": "semver",
              "status": "unaffected"
            },
            {
              "version": "7.2.7",
              "lessThanOrEqual": "7.2.*",
              "versionType": "semver",
              "status": "unaffected"
            },
            {
              "version": "7.3",
              "lessThanOrEqual": "*",
              "versionType": "original_commit_for_fix",
              "status": "unaffected"
            }
          ]
        }
      ]
    }
  ],
  "metrics": {},
  "references": [
    {
      "url": "https://git.kernel.org/stable/c/28fde1356dbc35e20a9f22a5ee65af09698fdf92",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/65cc95eba9e8b46312cac38c227473605a4b996a",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    }
  ]
}