ice: fix metadata_dst refcount handling on representor teardown
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.
- Products
- Kernel
- Affected versions
- Not specified
- Fixed versions
- 6.1.191, 6.12.113, 6.18.57, 6.6.160, 7.2.11
- CVEs
- CVE-2026-99043
- Confirmed fixed CVEs
- Not specified
- Updated in this feed
- 3 Nov 2026, 06:13 UTC · Revision 1
Source evidence
ice: fix metadata_dst refcount handling on representor teardown
core-osv · Original sourcePublished 23 Oct 2026, 12:22 UTC
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.
osv:CVE-2026-99043
Kernel
Fixed versions: 6.1.191, 6.6.160, 6.12.113, 6.18.57, 7.2.11
Complete source record
{
"id": "75b80274520a93f731159bf6a41f35d1a552aaa0fa782bdb0553707481e273f0",
"url": "https://osv.dev/vulnerability/CVE-2026-99043",
"method": "structured",
"payload": {
"kind": "advisory",
"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. 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.",
"evidence": "osv:CVE-2026-99043",
"products": [
{
"name": {
"value": "Kernel",
"evidence": "/affected/1/package/name"
},
"prerequisites": [],
"fixed_versions": [
{
"value": "6.1.191",
"evidence": "/affected/1/ranges"
},
{
"value": "6.6.160",
"evidence": "/affected/1/ranges"
},
{
"value": "6.12.113",
"evidence": "/affected/1/ranges"
},
{
"value": "6.18.57",
"evidence": "/affected/1/ranges"
},
{
"value": "7.2.11",
"evidence": "/affected/1/ranges"
}
],
"affected_versions": []
}
],
"severity": "unknown",
"structured": {
"id": "CVE-2026-99043",
"aliases": [
"CVE-2026-99043"
],
"affected": [
{
"ranges": [
{
"repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
"type": "GIT",
"events": [
{
"introduced": "f5396b8a663f7a78ee5b75a47ee524b40795b265"
},
{
"fixed": "41f0d9ab158fb51f34bded5f8a40918e4f70b2b6"
},
{
"fixed": "1f263235651775f93c15d90c9f25c3f4a4ef6512"
},
{
"fixed": "6f5544f53f1e58ea8a49fb9f9158d5793b9205b0"
},
{
"fixed": "beb05f484a1e4a5a66e3678e4b7f3147f651c080"
},
{
"fixed": "5e4d20db5179e83a4948927bc39e489a9a83256d"
},
{
"fixed": "58858b8f14803a7eeac297b3ce20f3b21bf2ff66"
}
]
}
],
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-99043.json"
}
},
{
"ranges": [
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "5.16.0"
},
{
"fixed": "6.1.191"
}
]
},
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "6.2.0"
},
{
"fixed": "6.6.160"
}
]
},
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "6.7.0"
},
{
"fixed": "6.12.113"
}
]
},
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "6.13.0"
},
{
"fixed": "6.18.57"
}
]
},
{
"type": "ECOSYSTEM",
"events": [
{
"introduced": "6.19.0"
},
{
"fixed": "7.2.11"
}
]
}
],
"package": {
"name": "Kernel",
"ecosystem": "Linux"
},
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-99043.json"
}
}
],
"modified": "2026-11-01T02:30:21.811884162Z",
"provider": "osv",
"references": [
"https://git.kernel.org/stable/c/1f263235651775f93c15d90c9f25c3f4a4ef6512",
"https://git.kernel.org/stable/c/41f0d9ab158fb51f34bded5f8a40918e4f70b2b6",
"https://git.kernel.org/stable/c/58858b8f14803a7eeac297b3ce20f3b21bf2ff66",
"https://git.kernel.org/stable/c/5e4d20db5179e83a4948927bc39e489a9a83256d",
"https://git.kernel.org/stable/c/6f5544f53f1e58ea8a49fb9f9158d5793b9205b0",
"https://git.kernel.org/stable/c/beb05f484a1e4a5a66e3678e4b7f3147f651c080",
"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/99xxx/CVE-2026-99043.json",
"https://nvd.nist.gov/vuln/detail/CVE-2026-99043",
"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/99xxx/CVE-2026-99043.json"
}
},
"related_cves": [
{
"value": "CVE-2026-99043",
"evidence": "/id"
}
],
"security_relevant": true,
"severity_evidence": null
},
"source_id": "core-osv",
"document_id": 492991,
"published_at": "2026-10-23T12:22:07.372+00:00"
}