Go to file
John Fastabend 41f70fe064 bpf: Test_verifier, add alu32 bounds tracking tests
Its possible to have divergent ALU32 and ALU64 bounds when using JMP32
instructins and ALU64 arithmatic operations. Sometimes the clang will
even generate this code. Because the case is a bit tricky lets add
a specific test for it.

Here is  pseudocode asm version to illustrate the idea,

 1 r0 = 0xffffffff00000001;
 2 if w0 > 1 goto %l[fail];
 3 r0 += 1
 5 if w0 > 2 goto %l[fail]
 6 exit

The intent here is the verifier will fail the load if the 32bit bounds
are not tracked correctly through ALU64 op. Similarly we can check the
64bit bounds are correctly zero extended after ALU32 ops.

 1 r0 = 0xffffffff00000001;
 2 w0 += 1
 2 if r0 > 3 goto %l[fail];
 6 exit

The above will fail if we do not correctly zero extend 64bit bounds
after 32bit op.

Signed-off-by: John Fastabend <john.fastabend@gmail.com>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Link: https://lore.kernel.org/bpf/158560430155.10843.514209255758200922.stgit@john-Precision-5820-Tower
2020-03-30 15:00:31 -07:00
arch bpf: Support llvm-objcopy for vmlinux BTF 2020-03-19 12:32:38 +01:00
block
certs
crypto
Documentation bpf: lsm: Add Documentation 2020-03-30 01:35:12 +02:00
drivers sfc: fix XDP-redirect in this driver 2020-03-16 18:22:43 -07:00
fs
include bpf: Verifier, do explicit ALU32 bounds tracking 2020-03-30 14:59:53 -07:00
init bpf, lsm: Make BPF_LSM depend on BPF_EVENTS 2020-03-30 22:57:23 +02:00
ipc
kernel bpf: Verifier, refine 32bit bound in do_refine_retval_range 2020-03-30 15:00:30 -07:00
lib
LICENSES
mm
net bpf: Don't refcount LISTEN sockets in sk_assign() 2020-03-30 13:45:05 -07:00
samples samples, bpf: Refactor perf_event user program with libbpf bpf_link 2020-03-23 22:27:57 +01:00
scripts bpf: Support llvm-objcopy for vmlinux BTF 2020-03-19 12:32:38 +01:00
security bpf: lsm: Initialize the BPF LSM hooks 2020-03-30 01:34:00 +02:00
sound
tools bpf: Test_verifier, add alu32 bounds tracking tests 2020-03-30 15:00:31 -07:00
usr
virt
.clang-format
.cocciconfig
.get_maintainer.ignore
.gitattributes
.gitignore
.mailmap
COPYING
CREDITS
Kbuild
Kconfig
MAINTAINERS bpf, doc: Add John as official reviewer to BPF subsystem 2020-03-30 22:40:02 +02:00
Makefile
README

Linux kernel
============

There are several guides for kernel developers and users. These guides can
be rendered in a number of formats, like HTML and PDF. Please read
Documentation/admin-guide/README.rst first.

In order to build the documentation, use ``make htmldocs`` or
``make pdfdocs``.  The formatted documentation can also be read online at:

    https://www.kernel.org/doc/html/latest/

There are various text files in the Documentation/ subdirectory,
several of them using the Restructured Text markup notation.

Please read the Documentation/process/changes.rst file, as it contains the
requirements for building and running the kernel, and information about
the problems which may result by upgrading your kernel.