Description
In the Linux kernel, the following vulnerability has been resolved: net: ethernet: mtk_eth_soc: Fix use-after-free in metadata dst teardown mtk_free_dev() calls metadata_dst_free() which frees the metadata_dst with kfree() immediately, bypassing the RCU grace period. In the RX path, skb_dst_set_noref() sets a non-refcounted pointer from the skb to the metadata_dst. This function requires RCU read-side protection and the dst must remain valid until all RCU readers complete. Since metadata_dst_free() calls kfree() directly, a use-after-free can occur if any skb still holds a noref pointer to the dst when the driver tears it down. Replace metadata_dst_free() with dst_release() which properly goes through the refcount path: when the refcount drops to zero, it schedules the actual free via call_rcu_hurry(), ensuring all RCU readers have completed before the memory is freed.
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
2d7605a729062bb554f03c5983d8cfb8c0b42e9c to < 72775977e89c25c99ee84d2c5baa3f86a8ba5cb4affected2d7605a729062bb554f03c5983d8cfb8c0b42e9c to < 459c6f35c58cf0fd5247e55d73ddaa29571d9b7eaffected2d7605a729062bb554f03c5983d8cfb8c0b42e9c to < e634408d2b0cd939cfe019398a21fb47b7a8ffe3affected2d7605a729062bb554f03c5983d8cfb8c0b42e9c to < 2d86aeb46d5f69c704065a8c69822582787272a1affected2d7605a729062bb554f03c5983d8cfb8c0b42e9c to < 80df409e1a483676826a6c66e693dba6ac507751affected
Linux Linux
Default version status: affected
6.2affected0 to < 6.2unaffected6.6.143 to ≤ 6.6.*unaffected6.12.94 to ≤ 6.12.*unaffected6.18.36 to ≤ 6.18.*unaffected7.0.13 to ≤ 7.0.*unaffected7.1 to ≤ *unaffected
References
- https://git.kernel.org/stable/c/72775977e89c25c99ee84d2c5baa3f86a8ba5cb4 ↗
- https://git.kernel.org/stable/c/459c6f35c58cf0fd5247e55d73ddaa29571d9b7e ↗
- https://git.kernel.org/stable/c/e634408d2b0cd939cfe019398a21fb47b7a8ffe3 ↗
- https://git.kernel.org/stable/c/2d86aeb46d5f69c704065a8c69822582787272a1 ↗
- https://git.kernel.org/stable/c/80df409e1a483676826a6c66e693dba6ac507751 ↗