In the Linux kernel, the following vulnerability has been resolved:
net: do not delay dstentriesadd() in dst_release()
dstentriesadd() uses per-cpu data that might be freed at netns dismantle from ip6routenetexit() calling dstentries_destroy()
Before ip6routenetexit() can be called, we release all the dsts associated with this netns, via calls to dstrelease(), which waits an rcu grace period before calling dst_destroy()
dstentriesadd() use in dstdestroy() is racy, because dstentries_destroy() could have been called already.
Decrementing the number of dsts must happen sooner.
Notes:
1) in CONFIGXFRM case, dstdestroy() can call dstreleaseimmediate(child), this might also cause UAF if the child does not have DST_NOCOUNT set. IPSEC maintainers might take a look and see how to address this.
2) There is also discussion about removing this count of dst, which might happen in future kernels.