selftests/bpf: Add cmp_map_pointer_with_const test

Add a test for CONST_PTR_TO_MAP comparison with a non-0 constant. A
BPF program with this code must not pass verification in unpriv.

Signed-off-by: Ihor Solodrai <isolodrai@meta.com>
Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Link: https://lore.kernel.org/bpf/20250609183024.359974-3-isolodrai@meta.com
pull/1309/head
Ihor Solodrai 2025-06-09 11:30:23 -07:00 committed by Andrii Nakryiko
parent 5534e58f2e
commit eb6c992784
1 changed files with 16 additions and 1 deletions

View File

@ -624,7 +624,6 @@ __retval(0)
__naked void cmp_map_pointer_with_zero(void)
{
asm volatile (" \
r1 = 0; \
r1 = %[map_hash_8b] ll; \
if r1 == 0 goto l0_%=; \
l0_%=: r0 = 0; \
@ -634,6 +633,22 @@ l0_%=: r0 = 0; \
: __clobber_all);
}
SEC("socket")
__description("unpriv: cmp map pointer with const")
__success __failure_unpriv __msg_unpriv("R1 pointer comparison prohibited")
__retval(0)
__naked void cmp_map_pointer_with_const(void)
{
asm volatile (" \
r1 = %[map_hash_8b] ll; \
if r1 == 0x0000beef goto l0_%=; \
l0_%=: r0 = 0; \
exit; \
" :
: __imm_addr(map_hash_8b)
: __clobber_all);
}
SEC("socket")
__description("unpriv: write into frame pointer")
__failure __msg("frame pointer is read only")