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.
reviewable/pr1182/r1
aorhant 2 months ago
parent ae317961ef
commit 9ef4b6e778

@ -249,7 +249,7 @@ pub(crate) fn bpf_map_lookup_elem_per_cpu<K: Pod, V: Pod>(
) -> SysResult<Option<PerCpuValues<V>>> {
let mut mem = PerCpuValues::<V>::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),
}

Loading…
Cancel
Save