TWx Linux Repository
Go to file
Eduard Zingerman 6efbde200b bpf: Handle scalar spill vs all MISC in stacksafe()
When check_stack_read_fixed_off() reads value from an spi
all stack slots of which are set to STACK_{MISC,INVALID},
the destination register is set to unbound SCALAR_VALUE.

Exploit this fact by allowing stacksafe() to use a fake
unbound scalar register to compare 'mmmm mmmm' stack value
in old state vs spilled 64-bit scalar in current state
and vice versa.

Veristat results after this patch show some gains:

./veristat -C -e file,prog,states -f 'states_pct>10'  not-opt after
File                     Program                States   (DIFF)
-----------------------  ---------------------  ---------------
bpf_overlay.o            tail_rev_nodeport_lb4    -45 (-15.85%)
bpf_xdp.o                tail_lb_ipv4            -541 (-19.57%)
pyperf100.bpf.o          on_event                -680 (-10.42%)
pyperf180.bpf.o          on_event               -2164 (-19.62%)
pyperf600.bpf.o          on_event               -9799 (-24.84%)
strobemeta.bpf.o         on_event               -9157 (-65.28%)
xdp_synproxy_kern.bpf.o  syncookie_tc             -54 (-19.29%)
xdp_synproxy_kern.bpf.o  syncookie_xdp            -74 (-24.50%)

Signed-off-by: Eduard Zingerman <eddyz87@gmail.com>
Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Link: https://lore.kernel.org/bpf/20240127175237.526726-6-maxtram95@gmail.com
2024-02-02 13:22:14 -08:00
arch riscv, bpf: Enable inline bpf_kptr_xchg() for RV64 2024-02-01 11:35:48 +01:00
block
certs
crypto
Documentation bpf, docs: Clarify which legacy packet instructions existed 2024-02-01 11:32:13 +01:00
drivers bpf: treewide: Annotate BPF kfuncs in BTF 2024-01-31 20:40:56 -08:00
fs bpf: treewide: Annotate BPF kfuncs in BTF 2024-01-31 20:40:56 -08:00
include bpf: Preserve boundaries and track scalars on narrowing fill 2024-02-02 13:22:14 -08:00
init
io_uring
ipc
kernel bpf: Handle scalar spill vs all MISC in stacksafe() 2024-02-02 13:22:14 -08:00
lib
LICENSES
mm
net bpf: treewide: Annotate BPF kfuncs in BTF 2024-01-31 20:40:56 -08:00
rust rust: phy: use VTABLE_DEFAULT_ERROR 2024-01-27 14:28:00 +00:00
samples
scripts bpf: Generate const static pointers for kernel helpers 2024-01-29 16:46:12 -08:00
security
sound
tools selftests/bpf: Add test cases for narrowing fill 2024-02-02 13:22:14 -08:00
usr
virt
.clang-format
.cocciconfig
.editorconfig
.get_maintainer.ignore
.gitattributes
.gitignore
.mailmap
.rustfmt.toml
COPYING
CREDITS
Kbuild
Kconfig
MAINTAINERS
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.