Sometimes sk is dereferenced as an rcu ptr, such as skb->sk in tp_btf, which is a valid type of sock common. Then helpers like bpf_skc_to_*() can be used with skb->sk. For example, the following prog will be rejected without this patch: ``` SEC("tp_btf/tcp_bad_csum") int BPF_PROG(tcp_bad_csum, struct sk_buff* skb) { struct sock *sk = skb->sk; struct tcp_sock *tp; if (!sk) return 0; tp = bpf_skc_to_tcp_sock(sk); return 0; } ``` Signed-off-by: Philo Lu <lulie@xxxxxxxxxxxxxxxxx> --- kernel/bpf/verifier.c | 1 + 1 file changed, 1 insertion(+) diff --git a/kernel/bpf/verifier.c b/kernel/bpf/verifier.c index 9a7ed527e47e..3e7ce448ae03 100644 --- a/kernel/bpf/verifier.c +++ b/kernel/bpf/verifier.c @@ -8362,6 +8362,7 @@ static const struct bpf_reg_types btf_id_sock_common_types = { PTR_TO_XDP_SOCK, PTR_TO_BTF_ID, PTR_TO_BTF_ID | PTR_TRUSTED, + PTR_TO_BTF_ID | MEM_RCU, }, .btf_id = &btf_sock_ids[BTF_SOCK_TYPE_SOCK_COMMON], }; -- 2.32.0.3.g01195cf9f