Page MenuHomeFreeBSD

netinet*: replace IP6_EXTHDR_GET()
ClosedPublic

Authored by bz on Nov 12 2019, 6:05 PM.
Tags
None
Referenced Files
F106115330: D22335.diff
Wed, Dec 25, 3:45 PM
Unknown Object (File)
Thu, Dec 12, 12:35 PM
Unknown Object (File)
Nov 13 2024, 8:32 AM
Unknown Object (File)
Oct 5 2024, 4:18 AM
Unknown Object (File)
Oct 4 2024, 1:04 PM
Unknown Object (File)
Sep 9 2024, 6:03 AM
Unknown Object (File)
Sep 8 2024, 6:07 PM
Unknown Object (File)
Sep 8 2024, 3:09 AM
Subscribers

Details

Summary

In a few places we have IP6_EXTHDR_GET() left in upper layer protocols.
The IP6_EXTHDR_GET() macro might perform an m_pulldown() in case the data
fragment is not contiguous.

Convert these last remaining instances into m_pullup()s instead.
In CARP, for example, we will a few lines later call m_pullup() anyway,
the IPsec code coming from OpenBSD would otherwise have done the m_pullup()
and are copying the data a bit later anyway, so pulling it in seems no
better or worse.

Note: this leaves very few m_pulldown() cases behind in the tree and we
might want to consider removing them as well to make mbuf management
easier again on a path to variable size mbufs, especially given
m_pulldown() still has an issue not re-checking M_WRITEABLE().

Diff Detail

Repository
rS FreeBSD src repository - subversion
Lint
No Lint Coverage
Unit
No Test Coverage
Build Status
Buildable 27478
Build 25710: arc lint + arc unit