diff --git a/aya/src/bpf.rs b/aya/src/bpf.rs index 2272bc52..7e03a12a 100644 --- a/aya/src/bpf.rs +++ b/aya/src/bpf.rs @@ -492,8 +492,13 @@ impl<'a> BpfLoader<'a> { let mut map = match obj.pinning() { PinningType::None => MapData::create(obj, &name, btf_fd)?, PinningType::ByName => { - let path = map_pin_path.as_ref().ok_or(BpfError::NoPinPath)?; - MapData::create_pinned(path, obj, &name, btf_fd)? + // pin maps in /sys/fs/bpf by default to align with libbpf + // behavior https://github.com/libbpf/libbpf/blob/v1.2.2/src/libbpf.c#L2161. + let path = map_pin_path + .as_deref() + .unwrap_or_else(|| Path::new("/sys/fs/bpf")); + + MapData::create_pinned_by_name(path, obj, &name, btf_fd)? } }; map.finalize()?; @@ -951,10 +956,6 @@ pub enum BpfError { error: io::Error, }, - /// Pinning requested but no path provided - #[error("pinning requested but no path provided")] - NoPinPath, - /// Unexpected pinning type #[error("unexpected pinning type {name}")] UnexpectedPinningType { diff --git a/aya/src/maps/mod.rs b/aya/src/maps/mod.rs index 84971419..af9ec868 100644 --- a/aya/src/maps/mod.rs +++ b/aya/src/maps/mod.rs @@ -461,7 +461,7 @@ impl MapData { Ok(Self { obj, fd }) } - pub(crate) fn create_pinned>( + pub(crate) fn create_pinned_by_name>( path: P, obj: obj::Map, name: &str, @@ -490,7 +490,6 @@ impl MapData { } Err(_) => { let mut map = Self::create(obj, name, btf_fd)?; - let path = path.join(name); map.pin(&path).map_err(|error| MapError::PinError { name: Some(name.into()), error,