Skip to content

bpf: Allow fall back to interpreter for programs with stack size <= 512 #5735

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 2 commits into
base: bpf_base
Choose a base branch
from

Conversation

kernel-patches-daemon-bpf-rc[bot]
Copy link

Pull request for series with
subject: bpf: Allow fall back to interpreter for programs with stack size <= 512
version: 2
url: https://patchwork.kernel.org/project/netdevbpf/list/?series=991061

@kernel-patches-daemon-bpf-rc
Copy link
Author

Upstream branch: 8f5ae30
series: https://patchwork.kernel.org/project/netdevbpf/list/?series=991061
version: 2

@kernel-patches-daemon-bpf-rc
Copy link
Author

Upstream branch: 7572a47
series: https://patchwork.kernel.org/project/netdevbpf/list/?series=991061
version: 2

@kernel-patches-daemon-bpf-rc
Copy link
Author

Upstream branch: e4414b0
series: https://patchwork.kernel.org/project/netdevbpf/list/?series=991061
version: 2

OpenWRT users reported regression on ARMv6 devices after updating to latest
HEAD, where tcpdump filter:

tcpdump "not ether host 3c37121a2b3c and not ether host 184ecbca2a3a \
and not ether host 14130b4d3f47 and not ether host f0f61cf440b7 \
and not ether host a84b4dedf471 and not ether host d022be17e1d7 \
and not ether host 5c497967208b and not ether host 706655784d5b"

fails with warning: "Kernel filter failed: No error information"
when using config:
 # CONFIG_BPF_JIT_ALWAYS_ON is not set
 CONFIG_BPF_JIT_DEFAULT_ON=y

The issue arises because commits:
1. "bpf: Fix array bounds error with may_goto" changed default runtime to
   __bpf_prog_ret0_warn when jit_requested = 1
2. "bpf: Avoid __bpf_prog_ret0_warn when jit fails" returns error when
   jit_requested = 1 but jit fails

This change restores interpreter fallback capability for BPF programs with
stack size <= 512 bytes when jit fails.

Reported-by: Felix Fietkau <[email protected]>
Closes: https://lore.kernel.org/bpf/[email protected]/
Fixes: 6ebc503 ("bpf: Fix array bounds error with may_goto")
Signed-off-by: KaFai Wan <[email protected]>
This test verifies socket filter attachment functionality on architectures
supporting either BPF JIT compilation or the interpreter.

It specifically validates the fallback to interpreter behavior when JIT fails,
particularly targeting ARMv6 devices with the following configuration:
  # CONFIG_BPF_JIT_ALWAYS_ON is not set
  CONFIG_BPF_JIT_DEFAULT_ON=y

Signed-off-by: KaFai Wan <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant