bpf: Fix verifier assumptions about socket->sk
authorAlexei Starovoitov <ast@kernel.org>
Sat, 27 Apr 2024 00:25:44 +0000 (17:25 -0700)
committerMartin KaFai Lau <martin.lau@kernel.org>
Mon, 29 Apr 2024 21:16:41 +0000 (14:16 -0700)
commit0db63c0b86e981a1e97d2596d64ceceba1a5470e
treed7e6ddaca356bbd5069fe7a5a8aab2cfa0fe97d7
parent89de2db19317fb89a6e9163f33c3a7b23ee75a18
bpf: Fix verifier assumptions about socket->sk

The verifier assumes that 'sk' field in 'struct socket' is valid
and non-NULL when 'socket' pointer itself is trusted and non-NULL.
That may not be the case when socket was just created and
passed to LSM socket_accept hook.
Fix this verifier assumption and adjust tests.

Reported-by: Liam Wisehart <liamwisehart@meta.com>
Acked-by: Kumar Kartikeya Dwivedi <memxor@gmail.com>
Fixes: 6fcd486b3a0a ("bpf: Refactor RCU enforcement in the verifier.")
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Link: https://lore.kernel.org/r/20240427002544.68803-1-alexei.starovoitov@gmail.com
Signed-off-by: Martin KaFai Lau <martin.lau@kernel.org>
kernel/bpf/verifier.c
tools/testing/selftests/bpf/progs/bench_local_storage_create.c
tools/testing/selftests/bpf/progs/local_storage.c
tools/testing/selftests/bpf/progs/lsm_cgroup.c