HomeFreeBSD

freebsd32_sendmsg: fix control message ABI

Description

freebsd32_sendmsg: fix control message ABI

When a freebsd32 caller uses all or most allowed space for control
messages (MCLBYTES == 2K) then the message may no longer fit when
the messages are padded for 64-bit alignment. Historically we've just
shrugged and said there is no ABI guarantee. We ran into this on
CheriBSD where a capsicumized 64-bit nm would fail when called with more
than 64 files.

Fix this by not gratutiously capping size of mbuf data we'll allocate
to MCLBYTES and let m_get2 allocate up to MJUMPAGESIZE (4K or larger).
Instead of hard-coding a length check, let m_get2 do it and check for a
NULL return.

Reviewed by: markj, jhb, emaste
Sponsored by: DARPA, AFRL
Differential Revision: https://reviews.freebsd.org/D36322

(cherry picked from commit c46697b9cb97a14f61ac0a58758aab081b9e48c5)

Details

Provenance
brooksAuthored on Aug 24 2022, 5:34 PM
Reviewer
markj
Differential Revision
D36322: freebsd32_sendmsg: fix control message ABI
Parents
rG8497b431f19e: kvmclock: Fix initialization when EARLY_AP_STARTUP is not defined
Branches
Unknown
Tags
Unknown