← Back to CVE Explorer

CVE-2026-89948

Full vulnerability record from the local CVENow database.

Description

In the Linux kernel, the following vulnerability has been resolved: batman-adv: bla: fix freeing of claims on meshif deletion When the mesh interface is getting deleted, then batadv_bla_del_backbone_claims() (via batadv_bla_purge_backbone_gw()) could make sure that all claims gets removed. But this function is only executed when bat_priv->bla.claim_hash is not NULL. And since batadv_bla_free() is always setting it to NULL before it is (indirectly) called, it was never actually executed. But the batadv_bla_purge_claims() -> batadv_handle_unclaim() is at the moment too fragile because the BLA code is not handling the rehashing in batadv_bla_update_orig_address(). The stored backbone address doesn't have to be the one actually used for the hash bucket selection during the initial adding of the backbone. The batadv_handle_unclaim() can therefore fail to find the respective backbone for the unclaim and then stop the deletion. But the actual backbone_gw object is not needed for the unclaim because all relevant information is always provided by the caller. And the check for the existence of the backbone_gw doesn't provide any additional security check for the deletion of a claim.

Severity
Not scored
CVSS score
Not available
Vulnerability status
Received
Source identifier
416baaa9-dc9f-4396-8d5f-8c081fb06d67
Published
2026-09-16 11:17:04.890000
Last modified
2026-10-19 09:18:40.783000
View original CVE JSON
{
  "id": "CVE-2026-89948",
  "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
  "published": "2026-09-16T11:17:04.890",
  "lastModified": "2026-10-19T09:18:40.783",
  "vulnStatus": "Received",
  "cveTags": [],
  "descriptions": [
    {
      "lang": "en",
      "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nbatman-adv: bla: fix freeing of claims on meshif deletion\n\nWhen the mesh interface is getting deleted, then\nbatadv_bla_del_backbone_claims() (via batadv_bla_purge_backbone_gw()) could\nmake sure that all claims gets removed. But this function is only executed\nwhen bat_priv->bla.claim_hash is not NULL. And since batadv_bla_free() is\nalways setting it to NULL before it is (indirectly) called, it was never\nactually executed.\n\nBut the batadv_bla_purge_claims() -> batadv_handle_unclaim() is at the\nmoment too fragile because the BLA code is not handling the rehashing in\nbatadv_bla_update_orig_address(). The stored backbone address doesn't have\nto be the one actually used for the hash bucket selection during the\ninitial adding of the backbone. The batadv_handle_unclaim() can therefore\nfail to find the respective backbone for the unclaim and then stop the\ndeletion.\n\nBut the actual backbone_gw object is not needed for the unclaim because all\nrelevant information is always provided by the caller. And the check for\nthe existence of the backbone_gw doesn't provide any additional security\ncheck for the deletion of a claim."
    }
  ],
  "affected": [
    {
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
      "affectedData": [
        {
          "vendor": "Linux",
          "product": "Linux",
          "defaultStatus": "unaffected",
          "programFiles": [
            "net/batman-adv/bridge_loop_avoidance.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "versions": [
            {
              "version": "23721387c409087fd3b97e274f34d3ddc0970b74",
              "lessThan": "844a95a734f178d56c7acce14c5cce2cecff7e1a",
              "versionType": "git",
              "status": "affected"
            },
            {
              "version": "23721387c409087fd3b97e274f34d3ddc0970b74",
              "lessThan": "baeb1a28fd8e2f68193650d3664a8cd1adfd85c6",
              "versionType": "git",
              "status": "affected"
            },
            {
              "version": "23721387c409087fd3b97e274f34d3ddc0970b74",
              "lessThan": "aacffa780a37e06cd5a13d33740a6e96c3a67e6c",
              "versionType": "git",
              "status": "affected"
            },
            {
              "version": "23721387c409087fd3b97e274f34d3ddc0970b74",
              "lessThan": "76aedcde5a2489cc971d4d1e396e784a49565e96",
              "versionType": "git",
              "status": "affected"
            },
            {
              "version": "23721387c409087fd3b97e274f34d3ddc0970b74",
              "lessThan": "f50edb69082a8ba990cc23d642089829f99afe6a",
              "versionType": "git",
              "status": "affected"
            },
            {
              "version": "23721387c409087fd3b97e274f34d3ddc0970b74",
              "lessThan": "871acdf97f64cee8398f72b88b89e8b4f4816dbe",
              "versionType": "git",
              "status": "affected"
            },
            {
              "version": "23721387c409087fd3b97e274f34d3ddc0970b74",
              "lessThan": "9a0c47023d3254048a1588534755d4476bcc3abc",
              "versionType": "git",
              "status": "affected"
            },
            {
              "version": "23721387c409087fd3b97e274f34d3ddc0970b74",
              "lessThan": "8d128c932bced74e3b1625ba3d7c78ef122a88a7",
              "versionType": "git",
              "status": "affected"
            }
          ]
        },
        {
          "vendor": "Linux",
          "product": "Linux",
          "defaultStatus": "affected",
          "programFiles": [
            "net/batman-adv/bridge_loop_avoidance.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "versions": [
            {
              "version": "3.5",
              "status": "affected"
            },
            {
              "version": "0",
              "lessThan": "3.5",
              "versionType": "semver",
              "status": "unaffected"
            },
            {
              "version": "5.10.270",
              "lessThanOrEqual": "5.10.*",
              "versionType": "semver",
              "status": "unaffected"
            },
            {
              "version": "5.15.221",
              "lessThanOrEqual": "5.15.*",
              "versionType": "semver",
              "status": "unaffected"
            },
            {
              "version": "6.1.188",
              "lessThanOrEqual": "6.1.*",
              "versionType": "semver",
              "status": "unaffected"
            },
            {
              "version": "6.6.157",
              "lessThanOrEqual": "6.6.*",
              "versionType": "semver",
              "status": "unaffected"
            },
            {
              "version": "6.12.110",
              "lessThanOrEqual": "6.12.*",
              "versionType": "semver",
              "status": "unaffected"
            },
            {
              "version": "6.18.51",
              "lessThanOrEqual": "6.18.*",
              "versionType": "semver",
              "status": "unaffected"
            },
            {
              "version": "7.2.5",
              "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/76aedcde5a2489cc971d4d1e396e784a49565e96",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/844a95a734f178d56c7acce14c5cce2cecff7e1a",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/871acdf97f64cee8398f72b88b89e8b4f4816dbe",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/8d128c932bced74e3b1625ba3d7c78ef122a88a7",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/9a0c47023d3254048a1588534755d4476bcc3abc",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/aacffa780a37e06cd5a13d33740a6e96c3a67e6c",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/baeb1a28fd8e2f68193650d3664a8cd1adfd85c6",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/f50edb69082a8ba990cc23d642089829f99afe6a",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    }
  ]
}