Browse Source

Remove verifier log special case

Tamir Duberstein 1 year ago
parent
commit
b5ebcb7cc5
3 changed files with 6 additions and 15 deletions
  1. 1 1
      aya-obj/src/btf/btf.rs
  2. 1 2
      aya/src/programs/mod.rs
  3. 4 12
      aya/src/sys/bpf.rs

+ 1 - 1
aya-obj/src/btf/btf.rs

@@ -135,7 +135,7 @@ pub enum BtfError {
         #[source]
         io_error: std::io::Error,
         /// The error log produced by the kernel verifier.
-        verifier_log: Cow<'static, str>,
+        verifier_log: String,
     },
 
     /// offset not found for symbol

+ 1 - 2
aya/src/programs/mod.rs

@@ -67,7 +67,6 @@ pub mod xdp;
 use libc::ENOSPC;
 use procfs::KernelVersion;
 use std::{
-    borrow::Cow,
     ffi::CString,
     io,
     os::unix::io::{AsRawFd, RawFd},
@@ -143,7 +142,7 @@ pub enum ProgramError {
         #[source]
         io_error: io::Error,
         /// The error log produced by the kernel verifier.
-        verifier_log: Cow<'static, str>,
+        verifier_log: String,
     },
 
     /// A syscall failed.

+ 4 - 12
aya/src/sys/bpf.rs

@@ -1,5 +1,4 @@
 use std::{
-    borrow::Cow,
     cmp::{self, min},
     ffi::{CStr, CString},
     io,
@@ -993,13 +992,10 @@ pub(crate) fn bpf_prog_get_next_id(id: u32) -> Result<Option<u32>, (c_long, io::
     }
 }
 
-pub(crate) fn retry_with_verifier_logs<F>(
+pub(crate) fn retry_with_verifier_logs(
     max_retries: usize,
-    f: F,
-) -> (SysResult, Cow<'static, str>)
-where
-    F: Fn(&mut [u8]) -> SysResult,
-{
+    f: impl Fn(&mut [u8]) -> SysResult,
+) -> (SysResult, String) {
     const MIN_LOG_BUF_SIZE: usize = 1024 * 10;
     const MAX_LOG_BUF_SIZE: usize = (std::u32::MAX >> 8) as usize;
 
@@ -1023,11 +1019,7 @@ where
         if let Some(pos) = log_buf.iter().position(|b| *b == 0) {
             log_buf.truncate(pos);
         }
-        let log_buf = if log_buf.is_empty() {
-            "none".into()
-        } else {
-            String::from_utf8(log_buf).unwrap().into()
-        };
+        let log_buf = String::from_utf8(log_buf).unwrap();
 
         break (ret, log_buf);
     }