Skip to content
Heist/ feed
Back to feed
UnratedFix available

ipv6: release nexthop on device removal

Type: advisorySources: OSV

In the Linux kernel, the following vulnerability has been resolved: ipv6: release nexthop on device removal The CI is hitting some aperiodic hangup at device removal time in the pmtu.sh self-test: unregister_netdevice: waiting for veth_A-R1 to become free. Usage count = 6 ref_tracker: veth_A-R1@ffff888013df15d8 has 1/5 users at dst_init+0x84/0x4a0 dst_alloc+0x97/0x150 ip6_dst_alloc+0x23/0x90 ip6_rt_pcpu_alloc+0x1e6/0x520 ip6_pol_route+0x56f/0x840 fib6_rule_lookup+0x334/0x630 ip6_route_output_flags+0x259/0x480 ip6_dst_lookup_tail.constprop.0+0x5c2/0x940 ip6_dst_lookup_flow+0x88/0x190 udp_tunnel6_dst_lookup+0x2a7/0x4c0 vxlan_xmit_one+0xbde/0x4a50 [vxlan] vxlan_xmit+0x9ad/0xf20 [vxlan] dev_hard_start_xmit+0x10e/0x360 __dev_queue_xmit+0xf95/0x18c0 arp_solicit+0x4a2/0xe00 neigh_probe+0xaa/0xf0 While the first suspect is the dst_cache, explicitly tracking the dst owing the last device reference via probes proved such dst is held by the nexthop in the originating fib6_info. Similar to commit f5b51fe804ec ("ipv6: route: purge exception on removal"), we need to explicitly release the originating fib info when disconnecting a to-be-removed device from a live ipv6 dst: move the fib6_info cleanup into ip6_dst_ifdown(). Tested running: ./pmtu.sh cleanup_ipv6_exception in a tight loop for more than 400 iterations with no spat, running an unpatched kernel I observed a splat every ~10 iterations.

Products
Kernel
Affected versions
Not specified
Fixed versions
5.15.181, 6.1.120, 6.11.11, 6.12.2, 6.6.64
CVEs
CVE-2024-56751
Confirmed fixed CVEs
Not specified
Updated in this feed
3 Nov 2026, 05:27 UTC · Revision 1

Source evidence

ipv6: release nexthop on device removal

core-osv · Original source

Published 29 Dec 2024, 11:30 UTC

In the Linux kernel, the following vulnerability has been resolved: ipv6: release nexthop on device removal The CI is hitting some aperiodic hangup at device removal time in the pmtu.sh self-test: unregister_netdevice: waiting for veth_A-R1 to become free. Usage count = 6 ref_tracker: veth_A-R1@ffff888013df15d8 has 1/5 users at dst_init+0x84/0x4a0 dst_alloc+0x97/0x150 ip6_dst_alloc+0x23/0x90 ip6_rt_pcpu_alloc+0x1e6/0x520 ip6_pol_route+0x56f/0x840 fib6_rule_lookup+0x334/0x630 ip6_route_output_flags+0x259/0x480 ip6_dst_lookup_tail.constprop.0+0x5c2/0x940 ip6_dst_lookup_flow+0x88/0x190 udp_tunnel6_dst_lookup+0x2a7/0x4c0 vxlan_xmit_one+0xbde/0x4a50 [vxlan] vxlan_xmit+0x9ad/0xf20 [vxlan] dev_hard_start_xmit+0x10e/0x360 __dev_queue_xmit+0xf95/0x18c0 arp_solicit+0x4a2/0xe00 neigh_probe+0xaa/0xf0 While the first suspect is the dst_cache, explicitly tracking the dst owing the last device reference via probes proved such dst is held by the nexthop in the originating fib6_info. Similar to commit f5b51fe804ec ("ipv6: route: purge exception on removal"), we need to explicitly release the originating fib info when disconnecting a to-be-removed device from a live ipv6 dst: move the fib6_info cleanup into ip6_dst_ifdown(). Tested running: ./pmtu.sh cleanup_ipv6_exception in a tight loop for more than 400 iterations with no spat, running an unpatched kernel I observed a splat every ~10 iterations.

osv:CVE-2024-56751

Kernel

Fixed versions: 5.15.181, 6.1.120, 6.6.64, 6.11.11, 6.12.2

Complete source record
{
  "id": "a7554565681a7fb1cdc7cb51d930878b9c33eca52459ec9862d8806bbd82fe5e",
  "url": "https://osv.dev/vulnerability/CVE-2024-56751",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "ipv6: release nexthop on device removal",
    "summary": "In the Linux kernel, the following vulnerability has been resolved: ipv6: release nexthop on device removal The CI is hitting some aperiodic hangup at device removal time in the pmtu.sh self-test: unregister_netdevice: waiting for veth_A-R1 to become free. Usage count = 6 ref_tracker: veth_A-R1@ffff888013df15d8 has 1/5 users at dst_init+0x84/0x4a0 dst_alloc+0x97/0x150 ip6_dst_alloc+0x23/0x90 ip6_rt_pcpu_alloc+0x1e6/0x520 ip6_pol_route+0x56f/0x840 fib6_rule_lookup+0x334/0x630 ip6_route_output_flags+0x259/0x480 ip6_dst_lookup_tail.constprop.0+0x5c2/0x940 ip6_dst_lookup_flow+0x88/0x190 udp_tunnel6_dst_lookup+0x2a7/0x4c0 vxlan_xmit_one+0xbde/0x4a50 [vxlan] vxlan_xmit+0x9ad/0xf20 [vxlan] dev_hard_start_xmit+0x10e/0x360 __dev_queue_xmit+0xf95/0x18c0 arp_solicit+0x4a2/0xe00 neigh_probe+0xaa/0xf0 While the first suspect is the dst_cache, explicitly tracking the dst owing the last device reference via probes proved such dst is held by the nexthop in the originating fib6_info. Similar to commit f5b51fe804ec (\"ipv6: route: purge exception on removal\"), we need to explicitly release the originating fib info when disconnecting a to-be-removed device from a live ipv6 dst: move the fib6_info cleanup into ip6_dst_ifdown(). Tested running: ./pmtu.sh cleanup_ipv6_exception in a tight loop for more than 400 iterations with no spat, running an unpatched kernel I observed a splat every ~10 iterations.",
    "evidence": "osv:CVE-2024-56751",
    "products": [
      {
        "name": {
          "value": "Kernel",
          "evidence": "/affected/1/package/name"
        },
        "prerequisites": [],
        "fixed_versions": [
          {
            "value": "5.15.181",
            "evidence": "/affected/1/ranges"
          },
          {
            "value": "6.1.120",
            "evidence": "/affected/1/ranges"
          },
          {
            "value": "6.6.64",
            "evidence": "/affected/1/ranges"
          },
          {
            "value": "6.11.11",
            "evidence": "/affected/1/ranges"
          },
          {
            "value": "6.12.2",
            "evidence": "/affected/1/ranges"
          }
        ],
        "affected_versions": []
      }
    ],
    "severity": "unknown",
    "structured": {
      "id": "CVE-2024-56751",
      "aliases": [
        "CVE-2024-56751"
      ],
      "affected": [
        {
          "ranges": [
            {
              "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
              "type": "GIT",
              "events": [
                {
                  "introduced": "f88d8ea67fbdbac7a64bfa6ed9a2ba27bb822f74"
                },
                {
                  "fixed": "77aa9855a878fb43f547ddfbda3127a1e88ad31a"
                },
                {
                  "fixed": "b2f26a27ea3f72f75d18330f76f5d1007c791848"
                },
                {
                  "fixed": "43e25adc80269f917d2a195f0d59f74cdd182955"
                },
                {
                  "fixed": "a3c3f8a4d025acc8c857246ec2b812c59102487a"
                },
                {
                  "fixed": "0e4c6faaef8a24b762a24ffb767280e263ef8e10"
                },
                {
                  "fixed": "eb02688c5c45c3e7af7e71f036a7144f5639cbfe"
                }
              ]
            }
          ],
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2024-56751.json"
          }
        },
        {
          "ranges": [
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "5.3.0"
                },
                {
                  "fixed": "5.15.181"
                }
              ]
            },
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "5.16.0"
                },
                {
                  "fixed": "6.1.120"
                }
              ]
            },
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "6.2.0"
                },
                {
                  "fixed": "6.6.64"
                }
              ]
            },
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "6.7.0"
                },
                {
                  "fixed": "6.11.11"
                }
              ]
            },
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "6.12.0"
                },
                {
                  "fixed": "6.12.2"
                }
              ]
            }
          ],
          "package": {
            "name": "Kernel",
            "ecosystem": "Linux"
          },
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2024-56751.json"
          }
        }
      ],
      "modified": "2026-10-28T02:30:26.460115803Z",
      "provider": "osv",
      "references": [
        "https://git.kernel.org/stable/c/0e4c6faaef8a24b762a24ffb767280e263ef8e10",
        "https://git.kernel.org/stable/c/43e25adc80269f917d2a195f0d59f74cdd182955",
        "https://git.kernel.org/stable/c/77aa9855a878fb43f547ddfbda3127a1e88ad31a",
        "https://git.kernel.org/stable/c/a3c3f8a4d025acc8c857246ec2b812c59102487a",
        "https://git.kernel.org/stable/c/b2f26a27ea3f72f75d18330f76f5d1007c791848",
        "https://git.kernel.org/stable/c/eb02688c5c45c3e7af7e71f036a7144f5639cbfe",
        "https://lists.debian.org/debian-lts-announce/2025/03/msg00001.html",
        "https://github.com/CVEProject/cvelistV5/tree/main/cves/2024/56xxx/CVE-2024-56751.json",
        "https://nvd.nist.gov/vuln/detail/CVE-2024-56751",
        "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/2024/56xxx/CVE-2024-56751.json"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2024-56751",
        "evidence": "/id"
      }
    ],
    "security_relevant": true,
    "severity_evidence": null
  },
  "source_id": "core-osv",
  "document_id": 492730,
  "published_at": "2024-12-29T11:30:16.805+00:00"
}