HomeFreeBSD

unix: Preserve FD_RESOLVE_BENEATH when passing an fd

Description

unix: Preserve FD_RESOLVE_BENEATH when passing an fd

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().

Fixes: 350ba9672a7f ("unix: Set O_RESOLVE_BENEATH on fds transferred between jails")
Reviewed by: kib
MFC after: 1 week
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D58317

(cherry picked from commit 586e2b3d89d6e70ab7e4a88497b5f36d78719423)

Details

Provenance
markjAuthored on Jul 24 2026, 8:06 PM
Reviewer
kib
Differential Revision
D58317: unix: Preserve FD_RESOLVE_BENEATH when passing an fd
Parents
rG13979cac4f19: kthread: Fix a thread leak
Branches
Unknown
Tags
Unknown