Page MenuHomeFreeBSD

unix: Preserve FD_RESOLVE_BENEATH when passing an fd
Needs ReviewPublic

Authored by markj on May 22 2026, 10:12 PM.
Tags
None
Referenced Files
F163223772: D57188.diff
Tue, Jul 21, 5:16 AM
F163145229: D57188.diff
Mon, Jul 20, 12:25 PM
Unknown Object (File)
Sat, Jul 11, 7:43 PM
Unknown Object (File)
Mon, Jun 22, 10:02 AM
Unknown Object (File)
Jun 4 2026, 9:05 AM
Unknown Object (File)
Jun 1 2026, 12:54 PM
Unknown Object (File)
May 30 2026, 9:40 PM
Unknown Object (File)
May 30 2026, 7:38 PM
Subscribers
This revision needs review, but there are no reviewers specified.

Details

Reviewers
None
Summary

The FD_RESOLVE_BENEATH flag is supposed to be sticky. It's set when you
receive an fd from a different jail and preserved by openat(<dfd>) etc..
However, if you send the fd to yourself, the flag is stripped since
SCM_RIGHTS message don't preserve file descriptor flags.

Fix this by preserving those flags and checking for UF_RESOLVE_BENEATH
in restrict_rights().

Diff Detail

Repository
rG FreeBSD src repository
Lint
Lint Skipped
Unit
Tests Skipped
Build Status
Buildable 73358
Build 70241: arc lint + arc unit