From 9ef4b6e778f82aae37879a11b63a02bb17637f7e Mon Sep 17 00:00:00 2001 From: aorhant Date: Wed, 26 Feb 2025 18:54:13 +0100 Subject: [PATCH] feat(aya): return correct Option from bpf_map_lookup_elem_per_cpu bpf_map_lookup_elem_per_cpu doesn't check the Option inside the Result:Ok, thus when it receive a Ok(None), it returns a zeroed value PerCpuValues. --- aya/src/sys/bpf.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/aya/src/sys/bpf.rs b/aya/src/sys/bpf.rs index 791959f1..476bcd4c 100644 --- a/aya/src/sys/bpf.rs +++ b/aya/src/sys/bpf.rs @@ -249,7 +249,7 @@ pub(crate) fn bpf_map_lookup_elem_per_cpu( ) -> SysResult>> { let mut mem = PerCpuValues::::alloc_kernel_mem().map_err(|io_error| (-1, io_error))?; match bpf_map_lookup_elem_ptr(fd, Some(key), mem.as_mut_ptr(), flags) { - Ok(_) => Ok(Some(unsafe { PerCpuValues::from_kernel_mem(mem) })), + Ok(v) => Ok(v.map(|_| unsafe { PerCpuValues::from_kernel_mem(mem) })), Err((_, io_error)) if io_error.raw_os_error() == Some(ENOENT) => Ok(None), Err(e) => Err(e), }