Sync kernel ctxt attrs in fork.

This commit is contained in:
4lDO2
2024-12-27 16:35:31 +01:00
parent 737d87cf9d
commit 063430f7ac
+15 -1
View File
@@ -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,