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]>

Reply via email to