Skip to content

Commit d6eb10d

Browse files
committed
feat(rtx-xdp): drop caps when done with them
1 parent eee71bb commit d6eb10d

File tree

4 files changed

+21
-0
lines changed

4 files changed

+21
-0
lines changed

Cargo.lock

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

programs/sbf/Cargo.lock

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

validator/Cargo.toml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,9 @@ tokio = { workspace = true }
9595
[target.'cfg(not(any(target_env = "msvc", target_os = "freebsd")))'.dependencies]
9696
jemallocator = { workspace = true }
9797

98+
[target.'cfg(target_os = "linux")'.dependencies]
99+
caps = { workspace = true }
100+
98101
[target."cfg(unix)".dependencies]
99102
libc = { workspace = true }
100103

validator/src/commands/run/execute.rs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -289,6 +289,22 @@ pub fn execute(
289289
.expect("failed to create xdp retransmitter")
290290
});
291291

292+
#[cfg(target_os = "linux")]
293+
{
294+
use caps::{
295+
CapSet,
296+
Capability::{CAP_BPF, CAP_NET_ADMIN, CAP_NET_RAW, CAP_PERFMON},
297+
};
298+
// we're done with caps needed to init xdp now. remove them from our process
299+
let cap_sets = [CapSet::Inheritable, CapSet::Permitted];
300+
for cap_set in cap_sets {
301+
caps::drop(None, cap_set, CAP_NET_ADMIN).expect("drop CAP_NET_ADMIN");
302+
caps::drop(None, cap_set, CAP_NET_RAW).expect("drop CAP_NET_RAW");
303+
caps::drop(None, cap_set, CAP_BPF).expect("drop CAP_BPF");
304+
caps::drop(None, cap_set, CAP_PERFMON).expect("drop CAP_PERFMON");
305+
}
306+
}
307+
292308
let reserved = retransmit_xdp
293309
.map(|xdp| xdp.cpus.clone())
294310
.unwrap_or_default()

0 commit comments

Comments
 (0)