| From f40108f5e000068cbef51f75636b9067725c4b8c Mon Sep 17 00:00:00 2001 |
| From: Lorenz Bauer <lmb@cloudflare.com> |
| Date: Fri, 24 Jan 2020 11:27:52 +0000 |
| Subject: [PATCH] selftests: bpf: Ignore FIN packets for reuseport tests |
| |
| commit 8bec4f665e0baecb5f1b683379fc10b3745eb612 upstream. |
| |
| The reuseport tests currently suffer from a race condition: FIN |
| packets count towards DROP_ERR_SKB_DATA, since they don't contain |
| a valid struct cmd. Tests will spuriously fail depending on whether |
| check_results is called before or after the FIN is processed. |
| |
| Exit the BPF program early if FIN is set. |
| |
| Fixes: 91134d849a0e ("bpf: Test BPF_PROG_TYPE_SK_REUSEPORT") |
| Signed-off-by: Lorenz Bauer <lmb@cloudflare.com> |
| Signed-off-by: Daniel Borkmann <daniel@iogearbox.net> |
| Reviewed-by: Jakub Sitnicki <jakub@cloudflare.com> |
| Acked-by: Martin KaFai Lau <kafai@fb.com> |
| Acked-by: John Fastabend <john.fastabend@gmail.com> |
| Link: https://lore.kernel.org/bpf/20200124112754.19664-3-lmb@cloudflare.com |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| diff --git a/tools/testing/selftests/bpf/progs/test_select_reuseport_kern.c b/tools/testing/selftests/bpf/progs/test_select_reuseport_kern.c |
| index 5b54ec637ada..e189f1036322 100644 |
| --- a/tools/testing/selftests/bpf/progs/test_select_reuseport_kern.c |
| +++ b/tools/testing/selftests/bpf/progs/test_select_reuseport_kern.c |
| @@ -113,6 +113,12 @@ int _select_by_skb_data(struct sk_reuseport_md *reuse_md) |
| data_check.skb_ports[0] = th->source; |
| data_check.skb_ports[1] = th->dest; |
| |
| + if (th->fin) |
| + /* The connection is being torn down at the end of a |
| + * test. It can't contain a cmd, so return early. |
| + */ |
| + return SK_PASS; |
| + |
| if ((th->doff << 2) + sizeof(*cmd) > data_check.len) |
| GOTO_DONE(DROP_ERR_SKB_DATA); |
| if (bpf_skb_load_bytes(reuse_md, th->doff << 2, &cmd_copy, |
| -- |
| 2.7.4 |
| |