---
id: CVE-2026-99043
title: 'ice: fix metadata_dst refcount handling on representor teardown'
summary: |-
  In the Linux kernel, the following vulnerability has been resolved:

  ice: fix metadata_dst refcount handling on representor teardown

  ice_eswitch_release_repr() uses metadata_dst_free() to release the
  representor's metadata_dst.  metadat…
severity: none
vendor: Linux
product: Linux
affected:
  - >-
    Linux >= f5396b8a663f7a78ee5b75a47ee524b40795b265 <
    1f263235651775f93c15d90c9f25c3f4a4ef6512
  - >-
    Linux >= f5396b8a663f7a78ee5b75a47ee524b40795b265 <
    6f5544f53f1e58ea8a49fb9f9158d5793b9205b0
  - >-
    Linux >= f5396b8a663f7a78ee5b75a47ee524b40795b265 <
    beb05f484a1e4a5a66e3678e4b7f3147f651c080
  - >-
    Linux >= f5396b8a663f7a78ee5b75a47ee524b40795b265 <
    5e4d20db5179e83a4948927bc39e489a9a83256d
  - >-
    Linux >= f5396b8a663f7a78ee5b75a47ee524b40795b265 <
    58858b8f14803a7eeac297b3ce20f3b21bf2ff66
  - Linux 5.16
published: '2026-10-23'
updated: '2026-10-23'
sourceUpdated: '2026-10-23T12:22:07.372Z'
source: CVEORG
sourceUrl: 'https://www.cve.org/CVERecord?id=CVE-2026-99043'
references:
  - url: 'https://git.kernel.org/stable/c/1f263235651775f93c15d90c9f25c3f4a4ef6512'
  - url: 'https://git.kernel.org/stable/c/6f5544f53f1e58ea8a49fb9f9158d5793b9205b0'
  - url: 'https://git.kernel.org/stable/c/beb05f484a1e4a5a66e3678e4b7f3147f651c080'
  - url: 'https://git.kernel.org/stable/c/5e4d20db5179e83a4948927bc39e489a9a83256d'
  - url: 'https://git.kernel.org/stable/c/58858b8f14803a7eeac297b3ce20f3b21bf2ff66'
tags:
  - cve.org
ingestedAt: '2026-10-23T13:24:55.527Z'
---

## Overview

In the Linux kernel, the following vulnerability has been resolved:

ice: fix metadata_dst refcount handling on representor teardown

ice_eswitch_release_repr() uses metadata_dst_free() to release the
representor's metadata_dst.  metadata_dst_free() directly frees the
underlying memory without checking the dst_entry refcount.

When ice_eswitch_port_start_xmit() processes a packet, it takes a
reference via dst_hold() and attaches the metadata_dst to the skb.
If the representor is torn down while packets are still queued on
the lower device (e.g. in a qdisc), the metadata_dst is freed while
references are still held.

Use dst_release() instead, which correctly decrements the refcount
and only frees the object when all references are dropped.  The dst
subsystem already handles metadata_dst cleanup in dst_destroy() when
DST_METADATA is set.

Other drivers sharing this pattern (nfp, airoha, bnxt) already use
dst_release() for their metadata_dst lifecycle.

## Affected

- `Linux >= f5396b8a663f7a78ee5b75a47ee524b40795b265 < 1f263235651775f93c15d90c9f25c3f4a4ef6512`
- `Linux >= f5396b8a663f7a78ee5b75a47ee524b40795b265 < 6f5544f53f1e58ea8a49fb9f9158d5793b9205b0`
- `Linux >= f5396b8a663f7a78ee5b75a47ee524b40795b265 < beb05f484a1e4a5a66e3678e4b7f3147f651c080`
- `Linux >= f5396b8a663f7a78ee5b75a47ee524b40795b265 < 5e4d20db5179e83a4948927bc39e489a9a83256d`
- `Linux >= f5396b8a663f7a78ee5b75a47ee524b40795b265 < 58858b8f14803a7eeac297b3ce20f3b21bf2ff66`
- `Linux 5.16`

## Remediation

Refer to the linked advisories for vendor-supplied fixes and affected version ranges.
