Message ID | CAM_iQpVv9Qxn+B01Ccvi+P5UPytqCr3i2rybG4RZdDjuyLgdbw@mail.gmail.com |
---|---|
State | RFC, archived |
Delegated to: | David Miller |
Headers | show |
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 <dsahern@gmail.com>
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); \