On Wed, Oct 08, 2025 at 12:40:34PM -0400, Pasha Tatashin wrote:
1. Ordered Un-preservation
The un-preservation of file descriptors must also be ordered and must
occur in the reverse order of preservation. For example, if a user
preserves a memfd first and then an iommufd that depends on it, the
iommufd must be un-preserved before the memfd when the session is
closed or the FDs are explicitly un-preserved.
Why?
I imagined the first to unpreserve would restore the struct file * -
that would satisfy the order.
The ioctl version that is to get back a FD would recover the struct
file and fd_install it.
Meaning preserve side is retaining a database of labels to restored
struct file *'s.
As discussed unpreserve a FD does not imply unfreeze, which is the
opposite of how preserver works.
2. New API to Check Preservation Status
A new LUO API will be needed to check if a struct file is already
preserved within a session. This is needed for dependency validation.
The proposed function would look like this:
This doesn't seem right, the API should be more like 'luo get
serialization handle for this file *'
If it hasn't been preserved then there won't be a handle, otherwise it
should return something to allow the unpreserving side to recover this
struct file *.
That's the general use case at least, there may be some narrower use
cases where the preserver throws away the handle.
Jason