From dfd26f907121f59624ce8c8f4657a176cb229cab Mon Sep 17 00:00:00 2001 From: Dave Tucker Date: Wed, 12 Oct 2022 21:21:50 +0000 Subject: [PATCH] rust-analyzer: Enable check all targets on save This switches off the panic_handler in ebpf code using conditional compilation... and fixes a lot of suppressed lints. Signed-off-by: Dave Tucker --- .vim/coc-settings.json | 1 - .vscode/settings.json | 1 - Cargo.toml | 2 +- aya-log/src/lib.rs | 1 - aya/src/obj/mod.rs | 5 ----- bpf/aya-bpf/src/programs/usdt.rs | 7 +++++-- test/integration-ebpf/src/map_test.rs | 1 + test/integration-ebpf/src/name_test.rs | 1 + test/integration-ebpf/src/pass.rs | 1 + test/integration-ebpf/src/test.rs | 1 + 10 files changed, 10 insertions(+), 11 deletions(-) diff --git a/.vim/coc-settings.json b/.vim/coc-settings.json index 07c919f9..d260a25d 100644 --- a/.vim/coc-settings.json +++ b/.vim/coc-settings.json @@ -1,4 +1,3 @@ { - "rust-analyzer.checkOnSave.allTargets": false, "rust-analyzer.checkOnSave.command": "clippy" } diff --git a/.vscode/settings.json b/.vscode/settings.json index 07c919f9..d260a25d 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,4 +1,3 @@ { - "rust-analyzer.checkOnSave.allTargets": false, "rust-analyzer.checkOnSave.command": "clippy" } diff --git a/Cargo.toml b/Cargo.toml index a345c22e..a332c2b7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -6,7 +6,7 @@ members = [ # ebpf crates "bpf/aya-bpf", "bpf/aya-bpf-bindings", "bpf/aya-log-ebpf", "test/integration-ebpf" ] -default-members = ["aya", "aya-tool", "aya-log", "aya-bpf-macros", "aya-log-ebpf-macros"] +default-members = ["aya", "aya-common", "aya-tool", "aya-log", "aya-bpf-macros", "aya-log-ebpf-macros"] [profile.dev] panic = "abort" diff --git a/aya-log/src/lib.rs b/aya-log/src/lib.rs index b56c16e6..d26f68f8 100644 --- a/aya-log/src/lib.rs +++ b/aya-log/src/lib.rs @@ -480,7 +480,6 @@ mod test { use super::*; use aya_log_common::{write_record_header, WriteToBuf}; use log::logger; - use testing_logger; fn new_log(args: usize) -> Result<(usize, Vec), ()> { let mut buf = vec![0; 8192]; diff --git a/aya/src/obj/mod.rs b/aya/src/obj/mod.rs index c7dd6d6c..159ed9d3 100644 --- a/aya/src/obj/mod.rs +++ b/aya/src/obj/mod.rs @@ -1488,7 +1488,6 @@ mod tests { map_flags: 5, id: 0, pinning: PinningType::None, - ..Default::default() }; assert_eq!( @@ -1507,7 +1506,6 @@ mod tests { map_flags: 5, id: 6, pinning: PinningType::ByName, - ..Default::default() }; assert_eq!(parse_map_def("foo", bytes_of(&def)).unwrap(), def); @@ -1523,7 +1521,6 @@ mod tests { map_flags: 5, id: 6, pinning: PinningType::ByName, - ..Default::default() }; let mut buf = [0u8; 128]; unsafe { ptr::write_unaligned(buf.as_mut_ptr() as *mut _, def) }; @@ -1554,7 +1551,6 @@ mod tests { map_flags: 5, id: 0, pinning: PinningType::None, - ..Default::default() }) ), "foo" @@ -2223,7 +2219,6 @@ mod tests { map_flags: BPF_F_RDONLY_PROG, id: 1, pinning: PinningType::None, - ..Default::default() }, section_index: 1, symbol_index: 1, diff --git a/bpf/aya-bpf/src/programs/usdt.rs b/bpf/aya-bpf/src/programs/usdt.rs index e3f59f30..4c8def4e 100644 --- a/bpf/aya-bpf/src/programs/usdt.rs +++ b/bpf/aya-bpf/src/programs/usdt.rs @@ -5,7 +5,6 @@ use aya_common::{ }; use crate::{ - args::FromPtRegs, helpers::{bpf_probe_read_kernel, bpf_probe_read_user}, macros::map, maps::{Array, HashMap}, @@ -18,6 +17,9 @@ use crate::bindings::pt_regs; #[cfg(bpf_target_arch = "aarch64")] use crate::bindings::user_pt_regs as pt_regs; +#[cfg(not(feature = "cookie"))] +use crate::args::FromPtRegs; + #[map(name = "__bpf_usdt_specs")] static USDT_SPECS: Array = Array::with_max_entries(USDT_MAX_SPEC_COUNT, 0); @@ -46,6 +48,7 @@ impl UsdtContext { } /// Access the register that holds the next instruction pointer. + #[cfg(not(feature = "cookie"))] #[inline(always)] fn ip(&self) -> Option { T::from_ip(unsafe { &*self.regs }) @@ -80,7 +83,7 @@ impl UsdtContext { if n > USDT_MAX_ARG_COUNT { return Err(UsdtError::MaxArgCount); } - let spec_id = self.spec_id()?; + let spec_id = self.spec_id().map_err(|_| UsdtError::SpecIdNotFound)?; let spec = USDT_SPECS.get(spec_id).ok_or(UsdtError::SpecIdNotFound)?; if n > (spec.arg_count as usize) { diff --git a/test/integration-ebpf/src/map_test.rs b/test/integration-ebpf/src/map_test.rs index fc17d1f9..fb639baa 100644 --- a/test/integration-ebpf/src/map_test.rs +++ b/test/integration-ebpf/src/map_test.rs @@ -26,6 +26,7 @@ unsafe fn try_pass(_ctx: XdpContext) -> Result { Ok(xdp_action::XDP_PASS) } +#[cfg(target_arch = "bpf")] #[panic_handler] fn panic(_info: &core::panic::PanicInfo) -> ! { unsafe { core::hint::unreachable_unchecked() } diff --git a/test/integration-ebpf/src/name_test.rs b/test/integration-ebpf/src/name_test.rs index f4f1e315..0d1db4ad 100644 --- a/test/integration-ebpf/src/name_test.rs +++ b/test/integration-ebpf/src/name_test.rs @@ -15,6 +15,7 @@ unsafe fn try_pass(_ctx: XdpContext) -> Result { Ok(xdp_action::XDP_PASS) } +#[cfg(target_arch = "bpf")] #[panic_handler] fn panic(_info: &core::panic::PanicInfo) -> ! { unsafe { core::hint::unreachable_unchecked() } diff --git a/test/integration-ebpf/src/pass.rs b/test/integration-ebpf/src/pass.rs index 0979d557..fa9ede91 100644 --- a/test/integration-ebpf/src/pass.rs +++ b/test/integration-ebpf/src/pass.rs @@ -15,6 +15,7 @@ unsafe fn try_pass(_ctx: XdpContext) -> Result { Ok(xdp_action::XDP_PASS) } +#[cfg(target_arch = "bpf")] #[panic_handler] fn panic(_info: &core::panic::PanicInfo) -> ! { unsafe { core::hint::unreachable_unchecked() } diff --git a/test/integration-ebpf/src/test.rs b/test/integration-ebpf/src/test.rs index d0ff7b32..d1ff6092 100644 --- a/test/integration-ebpf/src/test.rs +++ b/test/integration-ebpf/src/test.rs @@ -15,6 +15,7 @@ unsafe fn try_pass(_ctx: XdpContext) -> Result { Ok(xdp_action::XDP_PASS) } +#[cfg(target_arch = "bpf")] #[panic_handler] fn panic(_info: &core::panic::PanicInfo) -> ! { unsafe { core::hint::unreachable_unchecked() }