selftests: bpf: Ignore FIN packets for reuseport tests
commit5.4-rM2-2.2.x-imx-squashed8bec4f665e
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:91134d849a
("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: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
parent
44a522bf5e
commit
1f5f3f65f9
|
@ -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,
|
||||
|
|
Loading…
Reference in New Issue