Linux kernel source tree
Go to file
Yazhou Tang 55c0ced59f bpf: Reject negative offsets for ALU ops
When verifying BPF programs, the check_alu_op() function validates
instructions with ALU operations. The 'offset' field in these
instructions is a signed 16-bit integer.

The existing check 'insn->off > 1' was intended to ensure the offset is
either 0, or 1 for BPF_MOD/BPF_DIV. However, because 'insn->off' is
signed, this check incorrectly accepts all negative values (e.g., -1).

This commit tightens the validation by changing the condition to
'(insn->off != 0 && insn->off != 1)'. This ensures that any value
other than the explicitly permitted 0 and 1 is rejected, hardening the
verifier against malformed BPF programs.

Co-developed-by: Shenghao Yuan <shenghaoyuan0928@163.com>
Signed-off-by: Shenghao Yuan <shenghaoyuan0928@163.com>
Co-developed-by: Tianci Cao <ziye@zju.edu.cn>
Signed-off-by: Tianci Cao <ziye@zju.edu.cn>
Signed-off-by: Yazhou Tang <tangyazhou518@outlook.com>
Acked-by: Yonghong Song <yonghong.song@linux.dev>
Fixes: ec0e2da95f ("bpf: Support new signed div/mod instructions.")
Link: https://lore.kernel.org/r/tencent_70D024BAE70A0A309A4781694C7B764B0608@qq.com
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
2025-10-01 15:43:13 -07:00
Documentation LEDs for v6.18 2025-10-01 12:42:13 -07:00
LICENSES
arch bpf-next-6.18 2025-09-30 17:58:11 -07:00
block namespace-6.18-rc1 2025-09-29 11:20:29 -07:00
certs
crypto bpf-next-6.18 2025-09-30 17:58:11 -07:00
drivers Backlight for v6.18 2025-10-01 12:46:26 -07:00
fs Driver core changes for 6.18-rc1 2025-10-01 08:39:23 -07:00
include MFD for v6.18 2025-10-01 12:04:12 -07:00
init Updates for the VDSO subsystem: 2025-09-30 16:58:21 -07:00
io_uring io_uring-6.17-20250919 2025-09-19 12:10:49 -07:00
ipc namespace-6.18-rc1 2025-09-29 11:20:29 -07:00
kernel bpf: Reject negative offsets for ALU ops 2025-10-01 15:43:13 -07:00
lib Updates for the VDSO subsystem: 2025-09-30 16:58:21 -07:00
mm arm64 updates for 6.18 2025-09-29 18:48:39 -07:00
net bpf-next-6.18 2025-09-30 17:58:11 -07:00
rust regulator: Updates for v6.18 2025-10-01 11:43:54 -07:00
samples Driver core changes for 6.18-rc1 2025-10-01 08:39:23 -07:00
scripts Rust changes for v6.18 2025-09-30 19:12:49 -07:00
security lsm/stable-6.18 PR 20250926 2025-09-30 08:48:29 -07:00
sound MFD for v6.18 2025-10-01 12:04:12 -07:00
tools libbpf: remove linux/unaligned.h dependency for libbpf_sha256() 2025-10-01 15:27:25 -07:00
usr
virt
.clang-format
.clippy.toml
.cocciconfig
.editorconfig
.get_maintainer.ignore MAINTAINERS: remove Alyssa Rosenzweig 2025-09-18 21:17:31 +02:00
.gitattributes
.gitignore
.mailmap 7 hotfixes. 4 are cc:stable and the remainder address post-6.16 issues or 2025-09-28 09:32:00 -07:00
.pylintrc
.rustfmt.toml
COPYING
CREDITS MAINTAINERS: Delete inactive maintainers from AF_XDP 2025-09-25 13:18:22 +02:00
Kbuild sched: Make migrate_{en,dis}able() inline 2025-09-25 09:57:16 +02:00
Kconfig
MAINTAINERS MFD for v6.18 2025-10-01 12:04:12 -07:00
Makefile hardening updates for v6.18-rc1 2025-09-29 17:48:27 -07:00
README

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 reStructuredText 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.