Andrés Medina
a845bc2932
aya: Use AsFd when attaching fds to programs
...
This is a breaking change but adds another level of safety to ensure
the file descriptor we receive is valid. Additionally, this allows
aya to internally easily duplicate this file descriptor using std
library methods instead of manually calling `dup` which doesn't
duplicate with the CLOSE_ON_EXEC flag that is standard pratice to
avoid leaking the file descriptor when exec'ing.
2 years ago
Andrés Medina
f34066dab4
aya: Use BorrowedFd when using the program fd in sys/bpf.rs
...
This commit reveals but does not address a file descriptor leak in
LircLink2::query. This function returns a list of `LircLink`s where
each of them have a program file descriptor that is not going to be
closed. This commit does not add this leak; it merely makes it louder
in the code.
2 years ago
Tamir Duberstein
c7b5cd5eb5
Merge pull request #757 from aya-rs/attach-fd-owned
...
programs: `ProgramData::attach_prog_fd` is owned
2 years ago
Tamir Duberstein
3d68fa32cb
aya: use RAII to close FDs
2 years ago
Tamir Duberstein
ae6526e59b
programs: `ProgramData::attach_prog_fd` is owned
...
This prevents a file descriptor leak when extensions are used.
This is an API breaking change.
Updates #612 .
2 years ago
Tamir Duberstein
8b3a93161d
xtask: bless API with new nightly
2 years ago
dependabot[bot]
befa55eafc
Merge pull request #755 from aya-rs/dependabot/cargo/num_enum-0.7
2 years ago
dependabot[bot]
623cfd89bf
build(deps): update num_enum requirement from 0.6 to 0.7
...
Updates the requirements on [num_enum](https://github.com/illicitonion/num_enum ) to permit the latest version.
- [Commits](https://github.com/illicitonion/num_enum/compare/0.6.0...0.6.1 )
---
updated-dependencies:
- dependency-name: num_enum
dependency-type: direct:production
...
Signed-off-by: dependabot[bot] <support@github.com>
2 years ago
dependabot[bot]
9b72d6d260
Merge pull request #754 from aya-rs/dependabot/cargo/object-0.32
2 years ago
dependabot[bot]
d0838a7688
build(deps): update object requirement from 0.31 to 0.32
...
Updates the requirements on [object](https://github.com/gimli-rs/object ) to permit the latest version.
- [Changelog](https://github.com/gimli-rs/object/blob/master/CHANGELOG.md )
- [Commits](https://github.com/gimli-rs/object/compare/0.31.0...0.31.1 )
---
updated-dependencies:
- dependency-name: object
dependency-type: direct:production
...
Signed-off-by: dependabot[bot] <support@github.com>
2 years ago
Tamir Duberstein
e813a054ad
Merge pull request #744 from aya-rs/programfd-borrowed
...
programs: `ProgramFd` is owned
2 years ago
Tamir Duberstein
504fd1df0a
programs: `ProgramFd` is owned
...
`ProgramData::fd` is now a `ProgramFd`. This means that `ProgramData`
now closes the file descriptor on drop. In the future we might consider
making `ProgramFd` hold a `BorrowedFd` but this requires API design work
due to overlapping borrows.
Since `ProgramFd` is no longer `Copy`, update methods to take it by
reference to allow callers to use it multiple times as they are
accustomed to doing.
`ProgramFd` is now returned by reference and implements `try_clone` to
allow callers to avoid file descriptor cloning when desired.
This is an API breaking change.
Updates #612 .
2 years ago
Tamir Duberstein
7874ad99f7
Merge pull request #756 from aya-rs/wget
...
github: fix CI
2 years ago
Tamir Duberstein
6740c43a02
github: update 6.4.0 URLs
...
Seems the previous spin was pulled.
2 years ago
Tamir Duberstein
89eafd139d
github: use gxargs on macOS
...
`xargs -P0` always exits 0 on macOS, even on error.
2 years ago
Tamir Duberstein
47a8a4b878
github: reduce wget verbosity, remove -q
...
This allows errors to be shown; -q hides *all* output, which is not what
we want.
2 years ago
Andrew Stoycos
bcc9743254
Merge pull request #637 from astoycos/helpers
...
Add more helpful methods to `ProgramInfo`
2 years ago
Andrew Stoycos
e1a556894c
aya: add helper methods for ProgramInfo
...
- Add helper methods to get useful information from the ProgramInfo
object which is returned by the `loaded_programs()` API. Specifically
this code mirrors the `bpftool prog` command in terms of useful fields.
- Add a new API macro to each aya `Program` type to allow us to fetch
its accompanying `ProgramInfo` metadata after its been loaded.
- Add a new ProgramInfo constructor that builds a new instance using
a raw fd.
- Add a smoke test for the loaded_programs() API as well as
all the relevant methods on the ProgramInfo type.
Signed-off-by: Andrew Stoycos <astoycos@redhat.com>
2 years ago
Dave Tucker
03c5012db2
Merge pull request #702 from dave-tucker/mapdata-btffd
...
aya: Don't store btf_fd in MapData
2 years ago
Dave Tucker
8ce1c00ad8
Merge pull request #749 from dave-tucker/clang-format
...
.github: Add clang-format
2 years ago
Tamir Duberstein
7f98e419e6
Merge pull request #748 from aya-rs/btf_obj_fd-owned
...
programs: Plug attach_btf_obj_fd leak
2 years ago
Tamir Duberstein
d88ca62aaa
programs: Plug attach_btf_obj_fd leak
...
`ProgramData::attach_btf_obj_fd` is now owned. This means that
`ProgramData` now closes the file descriptor on drop.
Updates #612 .
2 years ago
Dave Tucker
db975e9778
aya: Don't store bpf_fd in MapData
...
This is only used in create and therefore can be passed
as a parameter.
Signed-off-by: Dave Tucker <dave@dtucker.co.uk>
2 years ago
Dave Tucker
02124002c8
.github: Add clang-format
...
Signed-off-by: Dave Tucker <dave@dtucker.co.uk>
2 years ago
Dave Tucker
c0a08276a6
Merge pull request #750 from dave-tucker/public-api-bless
2 years ago
Dave Tucker
d85afe78f9
xtask: Fix aya public-api
...
Changes to the bitflags crate changed some of our public api signature.
Signed-off-by: Dave Tucker <dave@dtucker.co.uk>
2 years ago
Tamir Duberstein
5bc922af23
Merge pull request #747 from aya-rs/helpers
...
sys: add map_ids to bpf_prog_get_info_by_fd
2 years ago
Tamir Duberstein
5ac186299b
sys: refactor btf_obj_get_info_by_fd to share code
2 years ago
Tamir Duberstein
c7a19bcefb
sys: add map_ids to bpf_prog_get_info_by_fd
...
Allows the caller to pass a slice which the kernel will populate with
map ids used by the program.
2 years ago
Tamir Duberstein
68bf8818ec
Merge pull request #745 from aya-rs/even-more-aggro-kp-handling
...
xtask: watch for kernel panic in stdout too
2 years ago
Tamir Duberstein
7e14214f47
xtask: add noapic to kernel parameters
...
This might prevent some kernel panics.
2 years ago
Tamir Duberstein
de65ba0067
xtask: watch for kernel panic in stdout too
...
Seems unclear whether kernel panics go to stdout or stderr, so do them
both.
2 years ago
Tamir Duberstein
90cf13163b
Merge pull request #743 from aya-rs/avoid-vec-ksyms
...
util: avoid vector allocation when parsing ksyms
2 years ago
Tamir Duberstein
5138c731a9
util: avoid vector allocation when parsing ksyms
2 years ago
Alessandro Decina
0c0cf70deb
Merge pull request #740 from addisoncrump/main
...
Revisit the stack trace API to remove resolution support
2 years ago
Addison Crump
ed777273b1
nuclear option: no symbol resolution in the crate
2 years ago
Tamir Duberstein
fbbf191bd3
Merge pull request #738 from aya-rs/kill-qemu-better
...
xtask: watch for kernel panics on stderr
2 years ago
Tamir Duberstein
58ba66c003
xtask: watch for kernel panics on stderr
...
It seems these go to stderr, not stdout. Use `Ctrl-A x` to shut QEMU
down if a panic is seen.
2 years ago
Tamir Duberstein
b54a106584
log: update comments
...
These were missed when the code was updated.
2 years ago
Tamir Duberstein
45df2519b6
Merge pull request #736 from aya-rs/logging-better
...
Remove pointless DefaultLogger
2 years ago
Tamir Duberstein
ecf0dd9739
Merge pull request #735 from aya-rs/log-option-not-result
...
aya-log: s/Result<usize, ()>/Option<NonZeroUsize>/
2 years ago
Tamir Duberstein
ca3f70b16a
aya-log: s/Result<usize, ()>/Option<NonZeroUsize>/
...
`Option<NonZeroUsize>` is guaranteed to have the same size as `usize`,
which is not guarnateed for `Result`. This is a minor optimization, but
also results in simpler code.
2 years ago
Tamir Duberstein
00d265c51b
Remove pointless DefaultLogger
...
This avoids an atomic load on every log.
2 years ago
Tamir Duberstein
412a0875b4
Merge pull request #733 from tamird/kernel-test
...
integration-test: Implement running on VMs
2 years ago
Tamir Duberstein
82a77bc83d
integration-test: Implement running on VMs
...
Implements running integration tests on multiple VMs with arbitrary
kernel images using `cargo xtask integration-test vm ...`.
This changes our coverage from 6.2 to 6.1 and 6.4.
2 years ago
Tamir Duberstein
b6a6a81f95
integration-test: deflake log test
...
Wait for at least one log and increase the wait time 10x.
2 years ago
Tamir Duberstein
d3513e7010
Merge pull request #734 from aya-rs/reduce-slicing
...
aya-obj: s/types.types[i]/*t/ where possible
2 years ago
Tamir Duberstein
dfb6020a1d
aya-obj: s/types.types[i]/*t/ where possible
...
We already have a mutable reference in scope, use it where possible.
2 years ago
Tamir Duberstein
84d5791d4e
Merge pull request #729 from aya-rs/logs-inline-always
...
log: annotate logging functions inlining
2 years ago
Dave Tucker
2a55fc7bd3
Merge pull request #725 from dave-tucker/enum64
...
aya, aya-obj: Implement ENUM64 fixups
2 years ago