Skip to content

Commit

Permalink
src/ebpf.rs: Increase instruction limit to 1 million
Browse files Browse the repository at this point in the history
The linux kernel allows programs of 1 million instructions, see

https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=c04c0d2b968ac45d6ef020316808ef6c82325a82

I'm hitting the 4096 limit in some corner cases with
https://github.com/seanyoung/cir, if the infrared protocol is very
complex (e.g. XMP). rbpf is used for testing the generated IR decoders
in the test framework.

Signed-off-by: Sean Young <sean@mess.org>
  • Loading branch information
seanyoung committed May 2, 2024
1 parent 3e80ed7 commit be84e0c
Show file tree
Hide file tree
Showing 2 changed files with 3 additions and 3 deletions.
2 changes: 1 addition & 1 deletion src/ebpf.rs
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
use byteorder::{ByteOrder, LittleEndian};

/// Maximum number of instructions in an eBPF program.
pub const PROG_MAX_INSNS: usize = 4096;
pub const PROG_MAX_INSNS: usize = 1000000;
/// Size of an eBPF instructions, in bytes.
pub const INSN_SIZE: usize = 8;
/// Maximum size of an eBPF program, in bytes.
Expand Down
4 changes: 2 additions & 2 deletions tests/ubpf_verifier.rs
Original file line number Diff line number Diff line change
Expand Up @@ -115,11 +115,11 @@ fn test_verifier_err_no_exit_backward_jump() {
}

#[test]
#[should_panic(expected = "[Verifier] Error: eBPF program length limited to 4096, here 4097")]
#[should_panic(expected = "[Verifier] Error: eBPF program length limited to 1000000, here 1000001")]
fn test_verifier_err_too_many_instructions() {
// uBPF uses 65637 instructions, because it sets its limit at 65636.
// We use the classic 4096 limit from kernel, so no need to produce as many instructions.
let mut prog = (0..(4096 * ebpf::INSN_SIZE)).map( |x| match x % 8 {
let mut prog = (0..(1_000_000 * ebpf::INSN_SIZE)).map( |x| match x % 8 {
0 => 0xb7,
1 => 0x01,
_ => 0
Expand Down

0 comments on commit be84e0c

Please sign in to comment.