summaryrefslogtreecommitdiff
path: root/tools/testing
diff options
context:
space:
mode:
authorSun Jian <sun.jian.kdev@gmail.com>2026-07-14 02:38:45 -0700
committerEduard Zingerman <eddyz87@gmail.com>2026-07-15 02:32:42 -0700
commitfd4cfa8c8f9a17cdec0539334d28754bc1d8a5d9 (patch)
tree4c8854c8d937ed08bde3b497b02d12dfc93bf08a /tools/testing
parent2d8af4e633d3dea7269f2dad724977ce48034fd4 (diff)
bpf: Reject negative const offsets for buffer pointers
The verifier rejects variable offsets for PTR_TO_TP_BUFFER and PTR_TO_BUF accesses, but it currently accepts a constant negative offset produced by pointer arithmetic. Commit 022ac0750883 ("bpf: use reg->var_off instead of reg->off for pointers") moved constant pointer offsets from reg->off to reg->var_off. However, __check_buffer_access() continued to check only the instruction offset. An access with reg->var_off equal to -8 and an instruction offset of zero therefore passes verification. For writable raw tracepoints, the access end is also calculated from the unsigned reg->var_off.value. An eight-byte access starting at -8 wraps the calculated end to zero, allowing the program to load and attach without increasing max_tp_access. After ensuring that reg->var_off is constant, calculate the effective access start using signed arithmetic and reject it when it is negative. Use the validated start to calculate the access end for both PTR_TO_TP_BUFFER and PTR_TO_BUF. Fixes: 022ac0750883 ("bpf: use reg->var_off instead of reg->off for pointers") Signed-off-by: Sun Jian <sun.jian.kdev@gmail.com> Acked-by: Shung-Hsi Yu <shung-hsi.yu@suse.com> Cc: stable@vger.kernel.org # 5.2.0 Link: https://patch.msgid.link/20260714093846.18159-2-sun.jian.kdev@gmail.com Signed-off-by: Eduard Zingerman <eddyz87@gmail.com>
Diffstat (limited to 'tools/testing')
0 files changed, 0 insertions, 0 deletions