diff options
author | Martin Pieuchot <mpi@cvs.openbsd.org> | 2017-02-28 09:50:14 +0000 |
---|---|---|
committer | Martin Pieuchot <mpi@cvs.openbsd.org> | 2017-02-28 09:50:14 +0000 |
commit | 02febb48bc383399157fe6caecefbeaa2690f7b3 (patch) | |
tree | a8e115424863596a10f0e312eacfd658100bf2fb /sys/netinet6/ip6_var.h | |
parent | 5160085bb7b80013adafea0d3b8cdd01f4563f91 (diff) |
Prevent a MP race in rtable_lookup().
If an ART node is linked to multiple route entries, in the MPATH case,
it is not safe to dereference ``an_dst''. This non-refcounted pointer
can be changed at any time by another CPU.
So get rid of the pointer and use the first destination of a route entry
when comparing sockaddrs.
This allows us so remove a pointer from 'struct art_node' and save 5Mb of
memory in an IPv4 fullfeed.
ok jmatthew@, claudio@, dlg@
Diffstat (limited to 'sys/netinet6/ip6_var.h')
0 files changed, 0 insertions, 0 deletions