Description
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 products
Version statuses are supplied by the assigning organization. Consult the original record for detailed ranges and platform conditions.
Linux Linux
Default version status: unaffected
f5396b8a663f7a78ee5b75a47ee524b40795b265 to < 1f263235651775f93c15d90c9f25c3f4a4ef6512affectedf5396b8a663f7a78ee5b75a47ee524b40795b265 to < 6f5544f53f1e58ea8a49fb9f9158d5793b9205b0affectedf5396b8a663f7a78ee5b75a47ee524b40795b265 to < beb05f484a1e4a5a66e3678e4b7f3147f651c080affectedf5396b8a663f7a78ee5b75a47ee524b40795b265 to < 5e4d20db5179e83a4948927bc39e489a9a83256daffectedf5396b8a663f7a78ee5b75a47ee524b40795b265 to < 58858b8f14803a7eeac297b3ce20f3b21bf2ff66affected
Linux Linux
Default version status: affected
5.16affected0 to < 5.16unaffected6.6.160 to ≤ 6.6.*unaffected6.12.113 to ≤ 6.12.*unaffected6.18.57 to ≤ 6.18.*unaffected7.2.11 to ≤ 7.2.*unaffected7.3 to ≤ *unaffected
References
- https://git.kernel.org/stable/c/1f263235651775f93c15d90c9f25c3f4a4ef6512 ↗
- https://git.kernel.org/stable/c/6f5544f53f1e58ea8a49fb9f9158d5793b9205b0 ↗
- https://git.kernel.org/stable/c/beb05f484a1e4a5a66e3678e4b7f3147f651c080 ↗
- https://git.kernel.org/stable/c/5e4d20db5179e83a4948927bc39e489a9a83256d ↗
- https://git.kernel.org/stable/c/58858b8f14803a7eeac297b3ce20f3b21bf2ff66 ↗