Skip to content

lwt: fix return values of BPF ops

Yan Zhai bpf linux-kselftest lkml netdev 2 versions – In review

Get series with b4
b4 am [email protected]

Versions newest first · linked by author and title

  1. v6 Latest4 patches 4 repliesIn review
  2. v54 patches 3 repliesSuperseded

Changes in v6 from the cover letter

* fix BPF-CI failures due to missing config and busybox ping issue

Patches in v6 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/4lwt: fix return values of BPF xmit opsnet/core/lwt_bpf.c+3 -40 replies
2/4lwt: check LWTUNNEL_XMIT_CONTINUE strictlyinclude/net/lwtunnel.h net/ipv4/ip_output.c net/ipv6/ip6_output.c+6 -30 replies
3/4selftests/bpf: add lwt_xmit tests for BPF_REDIRECTtools/testing/selftests/bpf/config tools/testing/selftests/bpf/prog_tests/lwt_helpers.h tools/testing/selftests/bpf/prog_tests/lwt_redirect.c +1 more+560 -00 replies
4/4selftests/bpf: add lwt_xmit tests for BPF_REROUTEtools/testing/selftests/bpf/config tools/testing/selftests/bpf/prog_tests/lwt_reroute.c tools/testing/selftests/bpf/progs/test_lwt_reroute.c+299 -00 replies

Reviews trailers per patch

No Reviewed-by, Acked-by or Tested-by trailers for v6 yet.

Read the v6 thread

Cover letter [PATCH v6 bpf 0/4] lwt: fix return values of BPF ops

lwt xmit hook does not expect positive return values in function ip_finish_output2 and ip6_finish_output. However, BPF programs can directly return positive statuses such like NET_XMIT_DROP, NET_RX_DROP, and etc to the caller. Such return values would make the kernel continue processing already freed skbs and eventually panic.

This set fixes the return values from BPF ops to unexpected continue processing, checks strictly on the correct continue condition for future proof. In addition, add missing selftests for BPF redirect and reroute cases for BPF-CI.

v5: https://lore.kernel.org/bpf/[email protected]/
v4: https://lore.kernel.org/bpf/[email protected]/T/
v3: https://lore.kernel.org/bpf/[email protected]/
v2: https://lore.kernel.org/netdev/[email protected]/
v1: https://lore.kernel.org/bpf/[email protected]/

changes since v5:
* fix BPF-CI failures due to missing config and busybox ping issue

changes since v4:
* fixed same error on BPF_REROUTE path
* re-implemented selftests under BPF-CI requirement

changes since v3:
* minor change in commit message and changelogs
* tested by Jakub Sitnicki

changes since v2:
* subject name changed
* also covered redirect to ingress case
* added selftests

changes since v1:
* minor code style changes

Yan Zhai (4):
lwt: fix return values of BPF xmit ops
lwt: check LWTUNNEL_XMIT_CONTINUE strictly selftests/bpf: add lwt_xmit tests for BPF_REDIRECT selftests/bpf: add lwt_xmit tests for BPF_REROUTE

 include/net/lwtunnel.h                        |   5 +-
 net/core/lwt_bpf.c                            |   7 +-
 net/ipv4/ip_output.c                          |   2 +-
 net/ipv6/ip6_output.c                         |   2 +-
 tools/testing/selftests/bpf/config            |   2 +
 .../selftests/bpf/prog_tests/lwt_helpers.h    | 139 ++++++++
 .../selftests/bpf/prog_tests/lwt_redirect.c   | 330 ++++++++++++++++++
 .../selftests/bpf/prog_tests/lwt_reroute.c    | 262 ++++++++++++++
 .../selftests/bpf/progs/test_lwt_redirect.c   |  90 +++++
 .../selftests/bpf/progs/test_lwt_reroute.c    |  36 ++
 10 files changed, 868 insertions(+), 7 deletions(-)
 create mode 100644 tools/testing/selftests/bpf/prog_tests/lwt_helpers.h
 create mode 100644 tools/testing/selftests/bpf/prog_tests/lwt_redirect.c
 create mode 100644 tools/testing/selftests/bpf/prog_tests/lwt_reroute.c
 create mode 100644 tools/testing/selftests/bpf/progs/test_lwt_redirect.c
 create mode 100644 tools/testing/selftests/bpf/progs/test_lwt_reroute.c
Signature · 1 line
2.30.2