On 7/17/17 11:23 AM, Cong Wang wrote:
> I bet req->rsk_listener is NULL, I guess we need the following fix:
>
> diff --git a/include/linux/bpf-cgroup.h b/include/linux/bpf-cgroup.h
> index 360c082e885c..d41d40ac3efd 100644
> --- a/include/linux/bpf-cgroup.h
> +++ b/include/linux/bpf-cgroup.h
> @@ -85,7 +85,7 @@ int __cgroup_bpf_run_filter_sock_ops(struct sock *sk,
> int __ret = 0;
> \
> if (cgroup_bpf_enabled && (sock_ops)->sk) { \
> typeof(sk) __sk = sk_to_full_sk((sock_ops)->sk);
> \
> - if (sk_fullsock(__sk))
> \
> + if (__sk && sk_fullsock(__sk))
> \
> __ret = __cgroup_bpf_run_filter_sock_ops(__sk,
> \
> sock_ops,
> \
>
> BPF_CGROUP_SOCK_OPS); \
>
safe bet. I should have seen that since objdump on the address pointed to
return (1 << sk->sk_state) & ~(TCPF_TIME_WAIT | TCPF_NEW_SYN_RECV);
in sk_fullsock.
Tested-by: David Ahern <[email protected]>