HomeFreeBSD

linuxolator: implement memfd_create syscall

Description

linuxolator: implement memfd_create syscall

This effectively mirrors our libc implementation, but with minor fudging --
name needs to be copied in from userspace, so we just copy it straight into
stack-allocated memfd_name into the correct position rather than allocating
memory that needs to be cleaned up.

The sealing-related fcntl(2) commands, F_GET_SEALS and F_ADD_SEALS, have
also been implemented now that we support them.

Note that this implementation is still not quite at feature parity w.r.t.
the actual Linux version; some caveats, from my foggy memory:

  • Need to implement SHM_GROW_ON_WRITE, default for memfd (in progress)
  • LTP wants the memfd name exposed to fdescfs
  • Linux allows open() of an fdescfs fd with O_TRUNC to truncate after dup. (?)

Interested parties can install and run LTP from ports (devel/linux-ltp) to
confirm any fixes.

PR: 240874
Reviewed by: kib, trasz
Differential Revision: https://reviews.freebsd.org/D21845

Details

Provenance
kevansAuthored on
Reviewer
kib
Differential Revision
D21845: linuxolator: implement memfd_create syscall
Parents
rS362768: Delete nfs_use_ext_pgs, since it is not needed.
Branches
Unknown
Tags
Unknown