aya: Correctly set the kernel code version for Debian kernel

Fix BPF syscall failure related to the kernel code version.
pull/579/head
Mary 1 year ago
parent f1d891836e
commit 3aeeb8167b

@ -127,6 +127,33 @@ pub(crate) fn kernel_version() -> Result<(u32, u32, u32), ()> {
let mut major = 0u32; let mut major = 0u32;
let mut minor = 0u32; let mut minor = 0u32;
let mut patch = 0u32; let mut patch = 0u32;
let debian_marker = CString::new("Debian").unwrap();
let p = libc::strstr(v.version.as_ptr(), debian_marker.as_ptr());
if !p.is_null() {
let debian_format = CString::new("Debian %u.%u.%u").map_err(|_| ())?;
if libc::sscanf(
p,
debian_format.as_ptr(),
&mut major as *mut u32,
&mut minor as *mut _,
&mut patch as *mut _,
) == 3
{
// On Debian 10, kernels after 4.19.229 expect 4.19.255 due to broken Makefile patches.
let patch_level_limit = if major == 4 && minor == 19 { 230 } else { 255 };
if patch >= patch_level_limit {
patch = 255;
}
return Ok((major, minor, patch));
}
}
let format = CString::new("%u.%u.%u").unwrap(); let format = CString::new("%u.%u.%u").unwrap();
if libc::sscanf( if libc::sscanf(
v.release.as_ptr(), v.release.as_ptr(),

Loading…
Cancel
Save