diff --git a/aya/src/bpf.rs b/aya/src/bpf.rs index a5fb9273..03b2fa99 100644 --- a/aya/src/bpf.rs +++ b/aya/src/bpf.rs @@ -477,8 +477,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)? + let path = match &map_pin_path { + Some(p) => p.to_owned(), + // 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. + None => PathBuf::from("/sys/fs/bpf"), + }; + MapData::create_pinned_by_name(path, obj, &name, btf_fd)? } }; map.finalize()?; diff --git a/aya/src/maps/mod.rs b/aya/src/maps/mod.rs index 191c5883..e79b53e8 100644 --- a/aya/src/maps/mod.rs +++ b/aya/src/maps/mod.rs @@ -440,7 +440,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, @@ -469,7 +469,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,