From 063430f7acaa27f38c020967c3fd099ee119ea03 Mon Sep 17 00:00:00 2001 From: 4lDO2 <4lDO2@protonmail.com> Date: Fri, 27 Dec 2024 16:35:31 +0100 Subject: [PATCH] Sync kernel ctxt attrs in fork. --- src/procmngr.rs | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/procmngr.rs b/src/procmngr.rs index 3052a6206a..cdfbad5b6a 100644 --- a/src/procmngr.rs +++ b/src/procmngr.rs @@ -15,7 +15,8 @@ use redox_scheme::{ use slab::Slab; use syscall::schemev2::NewFdFlags; use syscall::{ - Error, FobtainFdFlags, Result, EBADF, EBADFD, EEXIST, EINVAL, ENOENT, O_CLOEXEC, O_CREAT, + Error, FobtainFdFlags, ProcSchemeAttrs, Result, EBADF, EBADFD, EEXIST, EINVAL, ENOENT, + O_CLOEXEC, O_CREAT, }; pub fn run(write_fd: usize, auth: &FdGuard) { @@ -156,6 +157,19 @@ impl<'a> ProcScheme<'a> { } = *self.processes.get(&parent_pid).ok_or(Error::new(EBADFD))?; let new_ctxt_fd = FdGuard::new(syscall::dup(**self.auth, b"new-context")?); + let attr_fd = FdGuard::new(syscall::dup( + *new_ctxt_fd, + alloc::format!("attrs-{}", **self.auth).as_bytes(), + )?); + let _ = syscall::write( + *attr_fd, + &ProcSchemeAttrs { + pid: child_pid.0 as u32, + euid, + egid, + ens, + }, + )?; self.processes.insert( child_pid,