From a40955bb80a9bcd79ee13a446b927adda02fa96e Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Fri, 6 Feb 2026 21:59:17 +0100 Subject: [PATCH] Remove setrens handling and the rns/ens process fields It is no longer used due to the capability rework. --- bootstrap/src/procmgr.rs | 97 +++++----------------------------------- 1 file changed, 10 insertions(+), 87 deletions(-) diff --git a/bootstrap/src/procmgr.rs b/bootstrap/src/procmgr.rs index 42238072ec..eb2051b733 100644 --- a/bootstrap/src/procmgr.rs +++ b/bootstrap/src/procmgr.rs @@ -405,8 +405,6 @@ struct Process { rgid: u32, egid: u32, sgid: u32, - rns: u32, - ens: u32, status: ProcessStatus, disabled_setpgid: bool, @@ -654,8 +652,6 @@ impl<'a> ProcScheme<'a> { rgid: 0, egid: 0, sgid: 0, - rns: 1, - ens: 1, name: ArrayString::<32>::from_str("[init]").unwrap(), status: ProcessStatus::PossiblyRunnable, @@ -698,8 +694,6 @@ impl<'a> ProcScheme<'a> { rgid, egid, sgid, - ens, - rns, name, .. } = *proc_guard.borrow(); @@ -732,8 +726,6 @@ impl<'a> ProcScheme<'a> { rgid, egid, sgid, - rns, - ens, name, status: ProcessStatus::PossiblyRunnable, @@ -778,7 +770,7 @@ impl<'a> ProcScheme<'a> { pid: pid.0 as u32, euid: proc.euid, egid: proc.egid, - ens: proc.ens, + ens: 0, debug_name: arraystring_to_bytes(proc.name), })?; @@ -860,8 +852,8 @@ impl<'a> ProcScheme<'a> { rgid: process.rgid, egid: process.egid, sgid: process.sgid, - ens: process.ens, - rns: process.rns, + ens: 1, + rns: 1, }; *buf.get_mut(..size_of::()) .and_then(|b| plain::from_mut_bytes(b).ok()) @@ -972,15 +964,6 @@ impl<'a> ProcScheme<'a> { if u == u32::MAX { None } else { Some(u) } } match verb { - ProcCall::Setrens => Ready(Response::new( - self.on_setrens( - fd_pid, - cvt_u32(metadata[1] as u32), - cvt_u32(metadata[2] as u32), - ) - .map(|()| 0), - op, - )), ProcCall::Exit => self.on_exit_start( fd_pid, metadata[1] as u16, @@ -1096,6 +1079,11 @@ impl<'a> ProcScheme<'a> { } } ProcCall::GetProcCredentials => Response::ready_err(EACCES, op), + + // setrens is no longer implemented as procmgr call + // FIXME remove this ProcCall variant + ProcCall::Setrens => Response::ready_err(EINVAL, op), + } } Handle::Ps(_) => Response::ready_err(EOPNOTSUPP, op), @@ -1647,69 +1635,6 @@ impl<'a> ProcScheme<'a> { procs: &self.processes, } } - fn on_setrens(&mut self, pid: ProcessId, rns: Option, ens: Option) -> Result<()> { - let proc_rc = self.processes.get(&pid).ok_or(Error::new(EBADFD))?; - let mut process = proc_rc.borrow_mut(); - - let setrns = if rns.is_none() { - // Ignore RNS if -1 is passed - false - } else if rns == Some(0) { - // Allow entering capability mode - true - } else if process.rns == 0 { - // Do not allow leaving capability mode - return Err(Error::new(EPERM)); - } else if process.euid == 0 { - // Allow setting RNS if root - true - } else if rns == Some(process.ens) { - // Allow setting RNS if used for ENS - true - } else if rns == Some(process.rns) { - // Allow setting RNS if used for RNS - true - } else { - // Not permitted otherwise - return Err(Error::new(EPERM)); - }; - - let setens = if ens.is_none() { - // Ignore ENS if -1 is passed - false - } else if ens == Some(0) { - // Allow entering capability mode - true - } else if process.ens == 0 { - // Do not allow leaving capability mode - return Err(Error::new(EPERM)); - } else if process.euid == 0 { - // Allow setting ENS if root - true - } else if ens == Some(process.ens) { - // Allow setting ENS if used for ENS - true - } else if ens == Some(process.rns) { - // Allow setting ENS if used for RNS - true - } else { - // Not permitted otherwise - return Err(Error::new(EPERM)); - }; - - if setrns { - process.rns = rns.unwrap(); - } - if setens { - process.ens = ens.unwrap(); - } - if setrns || setens { - if let Err(err) = process.sync_kernel_attrs(pid, self.auth) { - log::warn!("Failed to sync kernel attrs in setrens: {err}"); - } - } - Ok(()) - } fn work_on( &mut self, mut state_entry: OccupiedEntry, @@ -2598,17 +2523,15 @@ impl<'a> ProcScheme<'a> { use core::fmt::Write; writeln!( string, - "{:<6}{:<6}{:<6}{:<6}{:<6}{:<6}{:<6}{:<6}{:<6}{:<6}{:<6}{:<8}{:<16}", + "{:<6}{:<6}{:<6}{:<6}{:<6}{:<6}{:<6}{:<6}{:<6}{:<8}{:<16}", pid.0, process.pgid.0, process.ppid.0, process.sid.0, process.ruid, process.rgid, - process.rns, process.euid, process.egid, - process.ens, process.threads.len(), status, process.name, @@ -2660,7 +2583,7 @@ impl Process { pid: my_pid.0 as u32, euid: self.euid, egid: self.egid, - ens: self.ens, + ens: 0, debug_name: arraystring_to_bytes(self.name), })?; }