diff --git a/aya/src/bpf.rs b/aya/src/bpf.rs index dc32e2f6..4bd590bb 100644 --- a/aya/src/bpf.rs +++ b/aya/src/bpf.rs @@ -519,11 +519,7 @@ impl<'a> EbpfLoader<'a> { .map(|(name, prog_obj)| { let function_obj = obj.functions.get(&prog_obj.function_key()).unwrap().clone(); - let prog_name = if FEATURES.bpf_name() { - Some(name.clone()) - } else { - None - }; + let prog_name = FEATURES.bpf_name().then(|| name.clone().into()); let section = prog_obj.section.clone(); let obj = (prog_obj, function_obj); diff --git a/aya/src/programs/mod.rs b/aya/src/programs/mod.rs index 45171628..013d91bc 100644 --- a/aya/src/programs/mod.rs +++ b/aya/src/programs/mod.rs @@ -71,6 +71,7 @@ pub mod uprobe; pub mod xdp; use std::{ + borrow::Cow, ffi::CString, io, os::fd::{AsFd, BorrowedFd}, @@ -493,7 +494,7 @@ impl Program { #[derive(Debug)] pub(crate) struct ProgramData { - pub(crate) name: Option, + pub(crate) name: Option>, pub(crate) obj: Option<(aya_obj::Program, aya_obj::Function)>, pub(crate) fd: Option, pub(crate) links: Links, @@ -509,7 +510,7 @@ pub(crate) struct ProgramData { impl ProgramData { pub(crate) fn new( - name: Option, + name: Option>, obj: (aya_obj::Program, aya_obj::Function), btf_fd: Option>, verifier_log_level: VerifierLogLevel, @@ -531,7 +532,7 @@ impl ProgramData { } pub(crate) fn from_bpf_prog_info( - name: Option, + name: Option>, fd: crate::MockableFd, path: &Path, info: bpf_prog_info, @@ -576,7 +577,7 @@ impl ProgramData { })?; let info = ProgramInfo::new_from_fd(fd.as_fd())?; - let name = info.name_as_str().map(|s| s.to_string()); + let name = info.name_as_str().map(ToOwned::to_owned).map(Into::into); Self::from_bpf_prog_info(name, fd, path.as_ref(), info.0, verifier_log_level) } }