mirror of
https://github.com/torvalds/linux.git
synced 2026-07-28 10:09:10 +02:00
selftests/bpf: Add test for stale bounds on LSM retval context load
Add a verifier test that catches the stale-bounds issue fixed in the previous patch. The test sets r6 = 0 to create known bounds, then loads the LSM hook return value into r6 from the context. Without the fix, the verifier intersects the retval range with the stale bounds and incorrectly narrows r6 to a single value, pruning the fall-through branch as dead code and missing the div-by-zero. Suggested-by: Eduard Zingerman <eddyz87@gmail.com> Signed-off-by: Tristan Madani <tristan@talencesecurity.com> Acked-by: Eduard Zingerman <eddyz87@gmail.com> Link: https://lore.kernel.org/r/20260622230123.3695446-3-tristmd@gmail.com Signed-off-by: Alexei Starovoitov <ast@kernel.org>
This commit is contained in:
parent
5e0b273e0a
commit
644332f48f
|
|
@ -197,4 +197,19 @@ int BPF_PROG(sleepable_lsm_cgroup)
|
|||
return 0;
|
||||
}
|
||||
|
||||
SEC("lsm/file_mprotect")
|
||||
__description("lsm retval load must reset stale register bounds")
|
||||
__failure __msg("div by zero")
|
||||
__naked int retval_load_resets_bounds(void *ctx)
|
||||
{
|
||||
asm volatile (
|
||||
"r6 = 0;"
|
||||
"r6 = *(u64 *)(r1 + 24);"
|
||||
"if r6 == 0 goto +1;"
|
||||
"r6 /= 0;"
|
||||
"r0 = 0;"
|
||||
"exit;"
|
||||
::: __clobber_all);
|
||||
}
|
||||
|
||||
char _license[] SEC("license") = "GPL";
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user