Commit Graph

1519 Commits (e68fa14d71610c1163a1112a4a62b55456d3f7e6)
 

Author SHA1 Message Date
Tamir Duberstein a4a69a6bcf
aya-log, aya-log-common: economize bytes
- Replace all `#[repr(usize)]` with `#[repr(u8)]`; this saves
  3*(sizeof(word)-1) bytes per log message.
- Encode payload length as u16 rather than usize; this saves
  sizeof(word)-1 bytes per log message. This is safe because the maximum
  size of a log message is less than (1 << 16 - 1).

This changes `level` to a require field in every log message. It was
already always present, but was treated as optional when reading.
1 year ago
Tamir Duberstein e4537e389a
aya-log: check errors in tests 1 year ago
Tamir Duberstein 4d098ef413
aya-log-pbf-macros: ensure WriteToBuf is used
Previously any old `write` method could be selected.
1 year ago
Tamir Duberstein 490d7d587a
aya-log, aya-log-common: Remove duplicate struct
Previously `struct TagLenValue` was defined in both aya-log and
aya-log-common where the former implemented reading and the latter
writing; the reading logic doesn't need the struct, so remove it.
1 year ago
Tamir Duberstein 4e2f8322cc
Build tests with all features
Remove mem::forget::<HashMap>() calls in tests which fail to compile when
HashMap is provided by hashbrown:

  info: running `cargo check --all-targets --no-default-features` on aya-obj (11/23)
      Checking aya-obj v0.1.0 (/home/tamird/src/aya/aya-obj)
  error[E0505]: cannot move out of `map` because it is borrowed
     --> aya-obj/src/relocation.rs:594:21
      |
  578 |         let map = fake_legacy_map(1);
      |             --- binding `map` declared here
  579 |         let maps_by_symbol = HashMap::from([(1, ("test_map", Some(1), &map))]);
      |                                                                       ---- borrow of `map` occurs here
  ...
  594 |         mem::forget(map);
      |                     ^^^ move out of `map` occurs here
  595 |     }
      |     - borrow might be used here, when `maps_by_symbol` is dropped and runs the destructor for type `hashbrown::HashMap<usize, (&str, Option<i32>, &maps::Map)>`

  error[E0505]: cannot move out of `map_1` because it is borrowed
     --> aya-obj/src/relocation.rs:655:21
      |
  632 |         let map_1 = fake_legacy_map(1);
      |             ----- binding `map_1` declared here
  ...
  635 |             (1, ("test_map_1", Some(1), &map_1)),
      |                                         ------ borrow of `map_1` occurs here
  ...
  655 |         mem::forget(map_1);
      |                     ^^^^^ move out of `map_1` occurs here
  656 |         mem::forget(map_2);
  657 |     }
      |     - borrow might be used here, when `maps_by_symbol` is dropped and runs the destructor for type `hashbrown::HashMap<usize, (&str, Option<i32>, &maps::Map)>`

  error[E0505]: cannot move out of `map_2` because it is borrowed
     --> aya-obj/src/relocation.rs:656:21
      |
  633 |         let map_2 = fake_legacy_map(2);
      |             ----- binding `map_2` declared here
  ...
  636 |             (2, ("test_map_2", Some(2), &map_2)),
      |                                         ------ borrow of `map_2` occurs here
  ...
  656 |         mem::forget(map_2);
      |                     ^^^^^ move out of `map_2` occurs here
  657 |     }
      |     - borrow might be used here, when `maps_by_symbol` is dropped and runs the destructor for type `hashbrown::HashMap<usize, (&str, Option<i32>, &maps::Map)>`

  error[E0505]: cannot move out of `map` because it is borrowed
     --> aya-obj/src/relocation.rs:694:21
      |
  678 |         let map = fake_btf_map(1);
      |             --- binding `map` declared here
  679 |         let maps_by_symbol = HashMap::from([(1, ("test_map", Some(1), &map))]);
      |                                                                       ---- borrow of `map` occurs here
  ...
  694 |         mem::forget(map);
      |                     ^^^ move out of `map` occurs here
  695 |     }
      |     - borrow might be used here, when `maps_by_symbol` is dropped and runs the destructor for type `hashbrown::HashMap<usize, (&str, Option<i32>, &maps::Map)>`

  error[E0505]: cannot move out of `map_1` because it is borrowed
     --> aya-obj/src/relocation.rs:755:21
      |
  732 |         let map_1 = fake_btf_map(1);
      |             ----- binding `map_1` declared here
  ...
  735 |             (1, ("test_map_1", Some(1), &map_1)),
      |                                         ------ borrow of `map_1` occurs here
  ...
  755 |         mem::forget(map_1);
      |                     ^^^^^ move out of `map_1` occurs here
  756 |         mem::forget(map_2);
  757 |     }
      |     - borrow might be used here, when `maps_by_symbol` is dropped and runs the destructor for type `hashbrown::HashMap<usize, (&str, Option<i32>, &maps::Map)>`

  error[E0505]: cannot move out of `map_2` because it is borrowed
     --> aya-obj/src/relocation.rs:756:21
      |
  733 |         let map_2 = fake_btf_map(2);
      |             ----- binding `map_2` declared here
  ...
  736 |             (2, ("test_map_2", Some(2), &map_2)),
      |                                         ------ borrow of `map_2` occurs here
  ...
  756 |         mem::forget(map_2);
      |                     ^^^^^ move out of `map_2` occurs here
  757 |     }
      |     - borrow might be used here, when `maps_by_symbol` is dropped and runs the destructor for type `hashbrown::HashMap<usize, (&str, Option<i32>, &maps::Map)>`

  For more information about this error, try `rustc --explain E0505`.
  error: could not compile `aya-obj` due to 6 previous errors
  warning: build failed, waiting for other jobs to finish...
  error: process didn't exit successfully: `/home/tamird/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/bin/cargo check --all-targets --manifest-path aya-obj/Cargo.toml --no-default-features` (exit status: 101)
1 year ago
Alessandro Decina 9291457fbd
Merge pull request #603 from probulate/main
Replace actions-rs/toolchain with dtolnay/rust-toolchain
1 year ago
Tamir Duberstein d5d6a95de6
Replace actions-rs/toolchain with dtolnay/rust-toolchain
See https://github.com/actions-rs/toolchain/issues/216; actions-rs seems
to be unmaintained.
1 year ago
Mary 9e1109b3ce aya: Move program's functions to the same map 1 year ago
Alessandro Decina 7d88470944
Merge pull request #600 from probulate/system-llvm
Remove reference to system-llvm
1 year ago
Tamir Duberstein b1abac89c4
Remove reference to system-llvm
This feature is being phased out of bpf-linker.
1 year ago
vadorovsky 4776029a9f
Merge pull request #578 from aya-rs/dependabot/cargo/bindgen-0.65
build(deps): update bindgen requirement from 0.64 to 0.65
1 year ago
dependabot[bot] ee0a3c7924
build(deps): update bindgen requirement from 0.64 to 0.65
Updates the requirements on [bindgen](https://github.com/rust-lang/rust-bindgen) to permit the latest version.
- [Release notes](https://github.com/rust-lang/rust-bindgen/releases)
- [Changelog](https://github.com/rust-lang/rust-bindgen/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/rust-bindgen/compare/v0.64.0...v0.65.1)

---
updated-dependencies:
- dependency-name: bindgen
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
1 year ago
vadorovsky 3ad3cb9ed8
Merge pull request #550 from aya-rs/dependabot/cargo/syn-2.0
build(deps): update syn requirement from 1.0 to 2.0
1 year ago
Kenjiro Nakayama 8c8d236f42 xtask: codegen: generate bindings for user_regs_struct
This patch adds `user_regs_struct`.

riscv provides struct user_regs_struct instead of struct pt_regs to userspace.
After bindings generates the code, adding the riscv support in `bpf/aya-bpf/src/args.rs`
then aya-bpf can be built for riscv.
1 year ago
dependabot[bot] 45072c0789 build(deps): update syn requirement from 1.0 to 2.0
Updates the requirements on [syn](https://github.com/dtolnay/syn) to permit the latest version.
- [Release notes](https://github.com/dtolnay/syn/releases)
- [Commits](https://github.com/dtolnay/syn/compare/1.0.0...2.0.3)

---
updated-dependencies:
- dependency-name: syn
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
1 year ago
vadorovsky 7cd1c642e3
Merge pull request #597 from nak3/test-clippy
aya: drop unnecessary `mut`
1 year ago
Kenjiro Nakayama e67025b66f Drop unnecessary mut 1 year ago
Alessandro Decina 0a1f1a2898
Merge pull request #594 from aya-rs/dependabot/github_actions/mikepenz/release-changelog-builder-action-3
build(deps): bump mikepenz/release-changelog-builder-action from 2 to 3
1 year ago
Alessandro Decina 38b403f1be
Merge pull request #595 from aya-rs/dependabot/github_actions/actions/checkout-3
build(deps): bump actions/checkout from 2 to 3
1 year ago
Alessandro Decina 67f480eb8e
Merge pull request #592 from probulate/update-bitflags
build(deps): update bitflags requirement from 1.2.1 to 2.2.1
1 year ago
dependabot[bot] 31301e4f51
build(deps): bump actions/checkout from 2 to 3
Bumps [actions/checkout](https://github.com/actions/checkout) from 2 to 3.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v2...v3)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
1 year ago
dependabot[bot] 53fb408b02
build(deps): bump mikepenz/release-changelog-builder-action from 2 to 3
Bumps [mikepenz/release-changelog-builder-action](https://github.com/mikepenz/release-changelog-builder-action) from 2 to 3.
- [Release notes](https://github.com/mikepenz/release-changelog-builder-action/releases)
- [Commits](https://github.com/mikepenz/release-changelog-builder-action/compare/v2...v3)

---
updated-dependencies:
- dependency-name: mikepenz/release-changelog-builder-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
1 year ago
Alessandro Decina e840c22602
Merge pull request #593 from probulate/actions-bot
Add github-actions dependabot config
1 year ago
Tamir Duberstein ae8a95b0ee
build(deps): update bitflags requirement from 1.2.1 to 2.2.1
Updates the requirements on [bitflags](https://github.com/bitflags/bitflags) to permit the latest version.
- [Release notes](https://github.com/bitflags/bitflags/releases)
- [Changelog](https://github.com/bitflags/bitflags/blob/main/CHANGELOG.md)
- [Commits](https://github.com/bitflags/bitflags/compare/1.2.1...2.2.1)
1 year ago
Tamir Duberstein 8e41cf6f5a
Add github-actions dependabot config 1 year ago
Alessandro Decina 2222b681be
Merge pull request #574 from vadorovsky/integration-aya-log
integration-test: Add tests for aya-log
1 year ago
Michal Rostecki 5fa17a192b integration-test: Add tests for aya-log 1 year ago
Michal Rostecki d31a1805da integration-test: Add `tokio_integration_test` macro
This new macro runs a test in a Tokio runtime and it can be used for
asynchronous tests (defined as `async fn`).
1 year ago
Alessandro Decina 3d3ce8bfa2
Merge pull request #591 from vadorovsky/aya-log-impl-pod
aya-log: Move the `Pod` implementations from aya-log-common to aya-log
1 year ago
Michal Rostecki 5603d7248a aya-log: Move the `Pod` implementations from aya-log-common to aya-log
Keeping the `Pod` implementations and optional dependency on aya in
aya-log-common breaks the clippy checks (which are made on the entire
workspace).

The reason is that when different crates inside the workspace have the
same dependency with different features, that dependency is built only
once with the sum of features needed by all crates. It's **not** being
built separately with different feature sets.

That's why, before this change, aya-log-common was built once for the
entire workspace with `userspace` feature enabled. That made importing
aya-log-ebpf inside integration-ebpf impossible. The aya-log-common
build, with `userspace` feature enabled, was pulling std as a
dependency. Therefore, importing aya-log-ebpf inside integration-ebpf
resulted in including std and errors like:

```
error[E0152]: found duplicate lang item `panic_impl`
  --> test/integration-ebpf/src/log.rs:23:1
   |
23 | fn panic(_info: &core::panic::PanicInfo) -> ! {
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   |
   = note: the lang item is first defined in crate `std` (which `aya` depends on)
```

This change fixes the problem by removing the `userspace` feature from
aya-log-common and moving the `Pod` implementations to aya-log.
1 year ago
vadorovsky deb054afa4
Merge pull request #577 from aya-rs/dependabot/cargo/object-0.31
build(deps): update object requirement from 0.30 to 0.31
1 year ago
Alessandro Decina 120b59dd2e
Merge pull request #545 from epompeii/lsm_sleepable
Add `BPF_F_SLEEPABLE` flag support to LSM
1 year ago
dependabot[bot] 4c78f7f1a0
build(deps): update object requirement from 0.30 to 0.31
Updates the requirements on [object](https://github.com/gimli-rs/object) to permit the latest version.
- [Release notes](https://github.com/gimli-rs/object/releases)
- [Changelog](https://github.com/gimli-rs/object/blob/master/CHANGELOG.md)
- [Commits](https://github.com/gimli-rs/object/compare/0.30.0...0.31.0)

---
updated-dependencies:
- dependency-name: object
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
1 year ago
Alessandro Decina 45efa6384f
Merge pull request #586 from probulate/no-std-inversion
aya: flip feature "no_std" to feature "std"
1 year ago
Tamir Duberstein 33a0a2b604
aya: flip feature "no_std" to feature "std"
This fixes `cargo build --all-features` by sidestepping the feature
unification problem described in The Cargo Book[0].

Add `cargo hack --feature-powerset` to CI to enforce that this doesn't
regress (and that all combinations of features work).

Since error_in_core is nightly-only, use core-error and a fake std
module to allow aya-obj to build without std on stable.

[0] https://doc.rust-lang.org/cargo/reference/features.html#feature-unification
1 year ago
Everett Pompeii 1f2006bfde
Merge branch 'aya-rs:main' into lsm_sleepable 1 year ago
vadorovsky fce1d763f4
Merge pull request #590 from Kab1r/main
aya-bpf: Add helper `change_proto`
1 year ago
Kabir Kwatra 92f9c43230
feat(bpf+sk_skb): wrap `change_proto` helper 1 year ago
Dave Tucker ed14751c79
Merge pull request #525 from dave-tucker/borrow
aya: MapData should be Borrow, not AsRef
1 year ago
Alessandro Decina b2d5059ac2
Merge pull request #583 from 0xrawsec/fix-builtin-linkage
Fix builtin linkage
1 year ago
Quentin JEROME 1464bdc1d4 - comment changed to be more precise
- adapted test to be more readable

Signed-off-by: Quentin JEROME <qjerome@users.noreply.github.com>
1 year ago
Alessandro Decina 1066c6c2e5
Merge pull request #579 from marysaka/fix/ubuntu-debian-kernel-version-code
aya: Correctly set the kernel code version for Ubuntu and Debian kernel
1 year ago
Mary 3aeeb8167b aya: Correctly set the kernel code version for Debian kernel
Fix BPF syscall failure related to the kernel code version.
1 year ago
Mary f1d891836e aya: Correctly set the kernel code version for Ubuntu kernel
Fix BPF syscall failure related to the kernel code version.
1 year ago
Quentin JEROME 72c1572178 added memmove, memcmp to the list of function changed to BTF_FUNC_STATIC
Signed-off-by: Quentin JEROME <qjerome@users.noreply.github.com>
1 year ago
Quentin JEROME 419448ed1a changed memset back not to return anything
Signed-off-by: Quentin JEROME <qjerome@users.noreply.github.com>
1 year ago
Quentin JEROME a51c9bc532 fixed indent
Signed-off-by: Quentin JEROME <qjerome@users.noreply.github.com>
1 year ago
Quentin JEROME 5b4fc9ea93 removed useless line break and comments
Signed-off-by: Quentin JEROME <qjerome@users.noreply.github.com>
1 year ago
Quentin JEROME 74bc754862 add debug messages
Signed-off-by: Quentin JEROME <qjerome@users.noreply.github.com>
1 year ago
Alessandro Decina b5c2928b0e
Merge pull request #582 from marysaka/feature/no-kern-read-sanitizer
aya: Add sanitize code for kernels without bpf_probe_read_kernel
1 year ago