Page MenuHomeFreeBSD

Fix 64-bit system call argument fetching for 32-bit Linux compat.
ClosedPublic

Authored by markj on Jan 16 2020, 7:17 PM.
Tags
None
Referenced Files
F82669463: D23210.diff
Wed, May 1, 10:47 AM
Unknown Object (File)
Jan 18 2024, 1:15 PM
Unknown Object (File)
Jan 15 2024, 3:52 PM
Unknown Object (File)
Jan 5 2024, 5:41 PM
Unknown Object (File)
Dec 20 2023, 1:53 AM
Unknown Object (File)
Sep 11 2023, 6:03 PM
Unknown Object (File)
Sep 7 2023, 2:27 PM
Unknown Object (File)
Sep 7 2023, 2:26 PM
Subscribers

Details

Summary

The Linux32 system call argument fetcher places each argument (passed in
registers in the Linux x86 system call convention) into an entry in the
generic system call args array. Each member of this array is 8 bytes
wide, so this approach is broken for system calls that take off_t
arguments.

Fix the problem by splitting l_loff_t arguments in the 32-bit system
call descriptions, the same as we do for FreeBSD32. Change entry points
to handle this using the PAIR32TO64 macro.

Move linux_ftruncate64() into compat/linux, I'm not sure why it wasn't
there before.

PR: 243155

Diff Detail

Lint
Lint Passed
Unit
No Test Coverage
Build Status
Buildable 28703
Build 26721: arc lint + arc unit