On Tue, Apr 28, 2020 at 11:57:19AM -0700, Stanislav Fomichev wrote: > Currently, bpf_getsocktop and bpf_setsockopt helpers operate on the > 'struct bpf_sock_ops' context in BPF_PROG_TYPE_CGROUP_SOCKOPT program. > Let's generalize them and make the first argument be 'struct bpf_sock'. > That way, in the future, we can allow those helpers in more places. > > BPF_PROG_TYPE_CGROUP_SOCKOPT still has the existing helpers that operate > on 'struct bpf_sock_ops', but we add new bpf_{g,s}etsockopt that work > on 'struct bpf_sock'. [Alternatively, for BPF_PROG_TYPE_CGROUP_SOCKOPT, > we can enable them both and teach verifier to pick the right one > based on the context (bpf_sock_ops vs bpf_sock).] > > As an example, let's allow those 'struct bpf_sock' based helpers to > be called from the BPF_CGROUP_INET{4,6}_CONNECT hooks. That way > we can override CC before the connection is made. > > Signed-off-by: Stanislav Fomichev <sdf@xxxxxxxxxx> Looks good to me and safety checks seem to be correct. Martin, could you please help review as well?