selftests/bpf: Validate multiple ref release_on_unlock logic
authorDave Marchevsky <davemarchevsky@fb.com>
Thu, 1 Dec 2022 18:34:06 +0000 (10:34 -0800)
committerAlexei Starovoitov <ast@kernel.org>
Fri, 2 Dec 2022 03:38:17 +0000 (19:38 -0800)
commit78b037bd402df8eca0f45ef003c6d0ab25a26ecc
tree91ba7e8bf9f0f5956980f6e875a849a828eb3cd7
parent1f82dffc10ff8e44bd0c2c85ba6e21189b4a5695
selftests/bpf: Validate multiple ref release_on_unlock logic

Modify list_push_pop_multiple to alloc and insert nodes 2-at-a-time.
Without the previous patch's fix, this block of code:

  bpf_spin_lock(lock);
  bpf_list_push_front(head, &f[i]->node);
  bpf_list_push_front(head, &f[i + 1]->node);
  bpf_spin_unlock(lock);

would fail check_reference_leak check as release_on_unlock logic would miss
a ref that should've been released.

Signed-off-by: Dave Marchevsky <davemarchevsky@fb.com>
cc: Kumar Kartikeya Dwivedi <memxor@gmail.com>
Acked-by: Yonghong Song <yhs@fb.com>
Link: https://lore.kernel.org/r/20221201183406.1203621-2-davemarchevsky@fb.com
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
tools/testing/selftests/bpf/progs/linked_list.c