Skip to content

Commit 497cb9d

Browse files
committed
agent: add the missing fixed in sandbox.rs
Signed-off-by: Ankita Pareek <ankitapareek@microsoft.com>
1 parent f635a99 commit 497cb9d

File tree

2 files changed

+19
-21
lines changed

2 files changed

+19
-21
lines changed

src/agent/rustjail/src/container.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1281,12 +1281,12 @@ impl BaseContainer for LinuxContainer {
12811281
let st = self.oci_state()?;
12821282

12831283
for process in self.processes.values() {
1284-
match signal::kill(Pid::from_raw(process.pid), Some(Signal::SIGKILL)) {
1284+
match signal::kill(process.pid()), Some(Signal::SIGKILL)) {
12851285
Err(Errno::ESRCH) => {
12861286
info!(
12871287
self.logger,
12881288
"kill encounters ESRCH, pid: {}, container: {}",
1289-
process.pid,
1289+
process.pid(),
12901290
self.id.clone()
12911291
);
12921292
continue;

src/agent/src/sandbox.rs

Lines changed: 17 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -272,8 +272,10 @@ impl Sandbox {
272272

273273
pub fn find_process(&mut self, pid: pid_t) -> Option<&mut Process> {
274274
for (_, c) in self.containers.iter_mut() {
275-
if let Some(p) = c.processes.get_mut(&pid) {
276-
return Some(p);
275+
for p in c.processes.values_mut() {
276+
if p.pid == pid {
277+
return Some(p);
278+
}
277279
}
278280
}
279281

@@ -286,9 +288,11 @@ impl Sandbox {
286288
.ok_or_else(|| anyhow!(ERR_INVALID_CONTAINER_ID))?;
287289

288290
if eid.is_empty() {
291+
let init_pid = ctr.init_process_pid;
289292
return ctr
290293
.processes
291-
.get_mut(&ctr.init_process_pid)
294+
.values_mut()
295+
.find(|p| p.pid == init_pid)
292296
.ok_or_else(|| anyhow!("cannot find init process!"));
293297
}
294298

@@ -1017,23 +1021,17 @@ mod tests {
10171021
linux_container.init_process_pid = 1;
10181022
linux_container.id = cid.to_string();
10191023
// add init process
1024+
let mut init_process = Process::new(&logger, &oci::Process::default(), "1", true, 1, None).unwrap();
1025+
init_process.pid = 1;
10201026
linux_container.processes.insert(
1021-
1,
1022-
Process::new(&logger, &oci::Process::default(), "1", true, 1, None).unwrap(),
1023-
);
1027+
"1".to_string(),
1028+
init_process);
10241029
// add exec process
1030+
let mut exec_process = Process::new(&logger, &oci::Process::default(), "exec-123", false, 1, None).unwrap();
1031+
exec_process.pid = 123;
10251032
linux_container.processes.insert(
1026-
123,
1027-
Process::new(
1028-
&logger,
1029-
&oci::Process::default(),
1030-
"exec-123",
1031-
false,
1032-
1,
1033-
None,
1034-
)
1035-
.unwrap(),
1036-
);
1033+
"exec-123".to_string(),
1034+
exec_process);
10371035

10381036
s.add_container(linux_container);
10391037

@@ -1084,8 +1082,8 @@ mod tests {
10841082
.unwrap();
10851083
// processes interally only have pids when manually set
10861084
test_process.pid = test_pid;
1087-
1088-
linux_container.processes.insert(test_pid, test_process);
1085+
let test_exec_id = test_process.exec_id.clone();
1086+
linux_container.processes.insert(test_exec_id, test_process);
10891087

10901088
s.add_container(linux_container);
10911089

0 commit comments

Comments
 (0)