Linux kernel source tree
Go to file
Alexei Starovoitov fbc0b02530 Merge branch 'Add precision propagation for subprogs and callbacks'
Andrii Nakryiko says:

====================
As more and more real-world BPF programs become more complex
and increasingly use subprograms (both static and global), scalar precision
tracking and its (previously weak) support for BPF subprograms (and callbacks
as a special case of that) is becoming more and more of an issue and
limitation. Couple that with increasing reliance on state equivalence (BPF
open-coded iterators have a hard requirement for state equivalence to converge
and successfully validate loops), and it becomes pretty critical to address
this limitation and make precision tracking universally supported for BPF
programs of any complexity and composition.

This patch set teaches BPF verifier to support SCALAR precision
backpropagation across multiple frames (for subprogram calls and callback
simulations) and addresses most practical situations (SCALAR stack
loads/stores using registers other than r10 being the last remaining
limitation, though thankfully rarely used in practice).

Main logic is explained in details in patch #8. The rest are preliminary
preparations, refactorings, clean ups, and fixes. See respective patches for
details.

Patch #8 has also veristat comparison of results for selftests, Cilium, and
some of Meta production BPF programs before and after these changes.

v2->v3:
  - drop bitcnt and ifs from bt_xxx() helpers (Alexei);
v1->v2:
  - addressed review feedback form Alexei, adjusted commit messages, comments,
    added verbose(), WARN_ONCE(), etc;
  - re-ran all the tests and veristat on selftests, cilium, and meta-internal
    code: no new changes and no kernel warnings.
====================

Signed-off-by: Alexei Starovoitov <ast@kernel.org>
2023-05-04 22:35:54 -07:00
arch Networking changes for 6.4. 2023-04-26 16:07:23 -07:00
block for-6.4/block-2023-04-21 2023-04-26 12:52:58 -07:00
certs KEYS: Add missing function documentation 2023-04-24 16:15:52 +03:00
crypto This update includes the following changes: 2023-04-26 08:32:52 -07:00
Documentation docs/bpf: Add LRU internals description and graph 2023-04-27 14:20:44 +02:00
drivers igc: Add XDP hints kfuncs for RX timestamp 2023-04-27 18:42:19 +02:00
fs Networking changes for 6.4. 2023-04-26 16:07:23 -07:00
include bpf: improve precision backtrack logging 2023-05-04 22:35:35 -07:00
init slab changes for 6.4 2023-04-25 13:00:41 -07:00
io_uring Networking changes for 6.4. 2023-04-26 16:07:23 -07:00
ipc Merge branch 'work.namespace' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs 2023-02-24 19:20:07 -08:00
kernel bpf: support precision propagation in the presence of subprogs 2023-05-04 22:35:35 -07:00
lib Networking changes for 6.4. 2023-04-26 16:07:23 -07:00
LICENSES LICENSES: Add the copyleft-next-0.3.1 license 2022-11-08 15:44:01 +01:00
mm Networking changes for 6.4. 2023-04-26 16:07:23 -07:00
net bpf: Emit struct bpf_tcp_sock type in vmlinux BTF 2023-05-02 16:19:06 -07:00
rust rust: allow to use INIT_STACK_ALL_ZERO 2023-04-19 19:34:43 +02:00
samples Networking changes for 6.4. 2023-04-26 16:07:23 -07:00
scripts Networking changes for 6.4. 2023-04-26 16:07:23 -07:00
security Networking changes for 6.4. 2023-04-26 16:07:23 -07:00
sound iter-ubuf.2-2023-04-21 2023-04-24 10:29:28 -07:00
tools selftests/bpf: revert iter test subprog precision workaround 2023-05-04 22:35:35 -07:00
usr initramfs: Check negative timestamp to prevent broken cpio archive 2023-04-16 17:37:01 +09:00
virt KVM: PPC: Make KVM_CAP_IRQFD_RESAMPLE platform dependent 2023-03-31 11:19:05 -04:00
.clang-format cpumask: re-introduce constant-sized cpumask optimizations 2023-03-05 14:30:34 -08:00
.cocciconfig
.get_maintainer.ignore get_maintainer: add Alan to .get_maintainer.ignore 2022-08-20 15:17:44 -07:00
.gitattributes .gitattributes: use 'dts' diff driver for *.dtso files 2023-02-26 15:28:23 +09:00
.gitignore linux-kselftest-kunit-6.4-rc1 2023-04-24 12:31:32 -07:00
.mailmap Networking fixes for 6.3-rc8, including fixes from netfilter and bpf 2023-04-20 11:03:51 -07:00
.rustfmt.toml rust: add .rustfmt.toml 2022-09-28 09:02:20 +02:00
COPYING COPYING: state that all contributions really are covered by this file 2020-02-10 13:32:20 -08:00
CREDITS qnx4: credit contributors in CREDITS 2023-03-14 12:56:30 -06:00
Kbuild Kbuild updates for v6.1 2022-10-10 12:00:45 -07:00
Kconfig kbuild: ensure full rebuild when the compiler is updated 2020-05-12 13:28:33 +09:00
MAINTAINERS Networking changes for 6.4. 2023-04-26 16:07:23 -07:00
Makefile Linux 6.3 2023-04-23 12:02:52 -07:00
README Drop all 00-INDEX files from Documentation/ 2018-09-09 15:08:58 -06:00

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.