All of lore.kernel.org
 help / color / mirror / Atom feed
From: Eduard Zingerman <eddyz87@gmail.com>
To: stable@vger.kernel.org, ast@kernel.org
Cc: andrii@kernel.org, daniel@iogearbox.net, martin.lau@linux.dev,
	yhs@fb.com, mykolal@fb.com, luizcap@amazon.com,
	Eduard Zingerman <eddyz87@gmail.com>
Subject: [PATCH 6.1.y 0/6] BPF selftests fixes for 6.1 branch
Date: Sat, 22 Jul 2023 03:45:08 +0300	[thread overview]
Message-ID: <20230722004514.767618-1-eddyz87@gmail.com> (raw)

Recently Luiz Capitulino reported BPF test failure for kernel version
6.1.36 (see [7]). The following test_verifier test failed:
"precise: ST insn causing spi > allocated_stack".
After back-port of the following upstream commit:
ecdf985d7615 ("bpf: track immediate values written to stack by BPF_ST instruction")

Investigation in [8] shows that test failure is not a bug, but a
difference in BPF verifier behavior between upstream, where commits
[1,2,3] by Andrii Nakryiko are present, and 6.1.36, where these
commits are absent. Both Luiz and Greg suggested back-porting [1,2,3]
from upstream to avoid divergences.

Commits [1,2,3] break test_progs selftest "align/packet variable offset",
commit [4] fixes this selftest.

I did some additional testing using the following compiler versions:
- Kernel compilation
  - gcc version 11.3.0
- BPF tests compilation
  - clang version 16.0.6
  - clang version 17.0.0 (fa46feb31481)

And identified a few more failing BPF selftests:
- Tests failing with LLVM 16:
  - test_verifier:
    - precise: ST insn causing spi > allocated_stack FAIL (fixed by [1,2,3])
  - test_progs:
    - sk_assign                                           (fixed by [6])
- Tests failing with LLVM 17:
  - test_verifier:
    - precise: ST insn causing spi > allocated_stack FAIL (fixed by [1,2,3])
  - test_progs:
    - fexit_bpf2bpf/func_replace_verify                   (fixed by [5])
    - fexit_bpf2bpf/func_replace_return_code              (fixed by [5])
    - sk_assign                                           (fixed by [6])

Commits [4,5,6] only apply to BPF selftests and don't change verifier
behavior.

After applying all of the listed commits I have test_verifier,
test_progs, test_progs-no_alu32 and test_maps passing on my x86 setup,
both for LLVM 16 and LLVM 17.

Upstream commits in chronological order:
[1] be2ef8161572 ("bpf: allow precision tracking for programs with subprogs")
[2] f63181b6ae79 ("bpf: stop setting precise in current state")
[3] 7a830b53c17b ("bpf: aggressively forget precise markings during state checkpointing")
[4] 4f999b767769 ("selftests/bpf: make test_align selftest more robust")
[5] 63d78b7e8ca2 ("selftests/bpf: Workaround verification failure for fexit_bpf2bpf/func_replace_return_code")
[6] 7ce878ca81bc ("selftests/bpf: Fix sk_assign on s390x")

Links:
[7] https://lore.kernel.org/stable/935c4751-d368-df29-33a6-9f4fcae720fa@amazon.com/
[8] https://lore.kernel.org/stable/c9b10a8a551edafdfec855fbd35757c6238ad258.camel@gmail.com/

Reported-by: Luiz Capitulino <luizcap@amazon.com>

Andrii Nakryiko (4):
  bpf: allow precision tracking for programs with subprogs
  bpf: stop setting precise in current state
  bpf: aggressively forget precise markings during state checkpointing
  selftests/bpf: make test_align selftest more robust

Ilya Leoshkevich (1):
  selftests/bpf: Fix sk_assign on s390x

Yonghong Song (1):
  selftests/bpf: Workaround verification failure for
    fexit_bpf2bpf/func_replace_return_code

 kernel/bpf/verifier.c                         | 202 ++++++++++++++++--
 .../testing/selftests/bpf/prog_tests/align.c  |  38 ++--
 .../selftests/bpf/prog_tests/sk_assign.c      |  25 ++-
 .../selftests/bpf/progs/connect4_prog.c       |   2 +-
 .../selftests/bpf/progs/test_sk_assign.c      |  11 +
 .../bpf/progs/test_sk_assign_libbpf.c         |   3 +
 6 files changed, 247 insertions(+), 34 deletions(-)
 create mode 100644 tools/testing/selftests/bpf/progs/test_sk_assign_libbpf.c

-- 
2.41.0


             reply	other threads:[~2023-07-22  0:46 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-07-22  0:45 Eduard Zingerman [this message]
2023-07-22  0:45 ` [PATCH 6.1.y 1/6] bpf: allow precision tracking for programs with subprogs Eduard Zingerman
2023-07-22  0:45 ` [PATCH 6.1.y 2/6] bpf: stop setting precise in current state Eduard Zingerman
2023-07-22  0:45 ` [PATCH 6.1.y 3/6] bpf: aggressively forget precise markings during state checkpointing Eduard Zingerman
2023-07-22  0:45 ` [PATCH 6.1.y 4/6] selftests/bpf: make test_align selftest more robust Eduard Zingerman
2023-07-22  0:45 ` [PATCH 6.1.y 5/6] selftests/bpf: Workaround verification failure for fexit_bpf2bpf/func_replace_return_code Eduard Zingerman
2023-07-22  0:45 ` [PATCH 6.1.y 6/6] selftests/bpf: Fix sk_assign on s390x Eduard Zingerman
2023-07-23 20:33 ` [PATCH 6.1.y 0/6] BPF selftests fixes for 6.1 branch Greg KH

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20230722004514.767618-1-eddyz87@gmail.com \
    --to=eddyz87@gmail.com \
    --cc=andrii@kernel.org \
    --cc=ast@kernel.org \
    --cc=daniel@iogearbox.net \
    --cc=luizcap@amazon.com \
    --cc=martin.lau@linux.dev \
    --cc=mykolal@fb.com \
    --cc=stable@vger.kernel.org \
    --cc=yhs@fb.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.