Description
In the Linux kernel, the following vulnerability has been resolved: vxlan: keep the last remote linked during FDB flush A non-nexthop FDB entry is expected to have at least one remote while it remains reachable through the FDB hash table. A filtered bulk flush violates this invariant when every remote matches: It unlinks the last remote in vxlan_fdb_dst_destroy() and only afterwards tells vxlan_flush() to destroy the parent FDB entry. An RCU reader can find the parent during this interval. first_remote_rcu() then applies list_entry_rcu() to the empty list head, producing an invalid remote pointer that the receive learning path can read from and write to. When a matching remote is the sole remaining remote, leave it linked and ask the caller to destroy the entire FDB entry. vxlan_fdb_destroy() keeps the remote attached while sending the deletion notification and removing the parent from the lookup structures.
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
c499fccb71cb85902b5c5b9ce9c9ae6683e54a8f to < 2a7c2f00843225d5f037676bca649321f3d024c7affectedc499fccb71cb85902b5c5b9ce9c9ae6683e54a8f to < a8820c8a7718327e96849782033e7c85a0f6bcfeaffectedc499fccb71cb85902b5c5b9ce9c9ae6683e54a8f to < 8ba68fd6cdd1e3c92b92f25c7e48bf7bd51a183caffectedc499fccb71cb85902b5c5b9ce9c9ae6683e54a8f to < 4bbc76ee1b21d3bd045d6d819b2bacd30a6372abaffectedc499fccb71cb85902b5c5b9ce9c9ae6683e54a8f to < d5d4a7b538b52db63927773a8905fcd9f78a42e2affected
Linux Linux
Default version status: affected
6.7affected0 to < 6.7unaffected6.12.108 to ≤ 6.12.*unaffected6.18.49 to ≤ 6.18.*unaffected7.1.13 to ≤ 7.1.*unaffected7.2.3 to ≤ 7.2.*unaffected7.3 to ≤ *unaffected
References
- https://git.kernel.org/stable/c/2a7c2f00843225d5f037676bca649321f3d024c7 ↗
- https://git.kernel.org/stable/c/a8820c8a7718327e96849782033e7c85a0f6bcfe ↗
- https://git.kernel.org/stable/c/8ba68fd6cdd1e3c92b92f25c7e48bf7bd51a183c ↗
- https://git.kernel.org/stable/c/4bbc76ee1b21d3bd045d6d819b2bacd30a6372ab ↗
- https://git.kernel.org/stable/c/d5d4a7b538b52db63927773a8905fcd9f78a42e2 ↗