On Wed, Jul 29, 2020 at 9:24 AM John Fastabend <john.fastabend@xxxxxxxxx> wrote: > [...] > > Signed-off-by: John Fastabend <john.fastabend@xxxxxxxxx> Acked-by: Song Liu <songliubraving@xxxxxx> > --- > .../testing/selftests/bpf/progs/test_tcpbpf_kern.c | 13 +++++++++++++ > 1 file changed, 13 insertions(+) > > diff --git a/tools/testing/selftests/bpf/progs/test_tcpbpf_kern.c b/tools/testing/selftests/bpf/progs/test_tcpbpf_kern.c > index 1f1966e..f8b13682 100644 > --- a/tools/testing/selftests/bpf/progs/test_tcpbpf_kern.c > +++ b/tools/testing/selftests/bpf/progs/test_tcpbpf_kern.c > @@ -54,6 +54,7 @@ SEC("sockops") > int bpf_testcb(struct bpf_sock_ops *skops) > { > char header[sizeof(struct ipv6hdr) + sizeof(struct tcphdr)]; > + struct bpf_sock_ops *reuse = skops; > struct tcphdr *thdr; > int good_call_rv = 0; > int bad_call_rv = 0; > @@ -62,6 +63,18 @@ int bpf_testcb(struct bpf_sock_ops *skops) > int v = 0; > int op; > > + /* Test reading fields in bpf_sock_ops using single register */ > + asm volatile ( > + "%[reuse] = *(u32 *)(%[reuse] +96)" > + : [reuse] "+r"(reuse) > + :); > + > + asm volatile ( > + "%[op] = *(u32 *)(%[skops] +96)" > + : [op] "+r"(op) > + : [skops] "r"(skops) > + :); > + Shall we add a separate test for this? It does seem to fix in bpf_testcb(). > op = (int) skops->op; > > update_event_map(op); >