[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20240112190530.3751661-1-martin.lau@linux.dev>
Date: Fri, 12 Jan 2024 11:05:27 -0800
From: Martin KaFai Lau <martin.lau@...ux.dev>
To: bpf@...r.kernel.org
Cc: 'Alexei Starovoitov ' <ast@...nel.org>,
'Andrii Nakryiko ' <andrii@...nel.org>,
'Daniel Borkmann ' <daniel@...earbox.net>,
netdev@...r.kernel.org,
kernel-team@...a.com
Subject: [PATCH v3 bpf 0/3] bpf: Fix backward progress bug in bpf_iter_udp
From: Martin KaFai Lau <martin.lau@...nel.org>
This patch set fixes an issue in bpf_iter_udp that makes backward
progress and prevents the user space process from finishing. There is
a test at the end to reproduce the bug.
Please see individual patches for details.
v3:
- Fixed the iter_fd check and local_port check in the
patch 3 selftest. (Yonghong)
- Moved jhash2 to test_jhash.h in the patch 3. (Yonghong)
- Added explanation in the bucket selection in the patch 3. (Yonghong)
v2:
- Added patch 1 to fix another bug that goes back to
the previous bucket
- Simplify the fix in patch 2 to always reset iter->offset to 0
- Add a test case to close all udp_sk in a bucket while
in the middle of the iteration.
Martin KaFai Lau (3):
bpf: iter_udp: Retry with a larger batch size without going back to
the previous bucket
bpf: Avoid iter->offset making backward progress in bpf_iter_udp
selftests/bpf: Test udp and tcp iter batching
net/ipv4/udp.c | 22 ++-
.../bpf/prog_tests/sock_iter_batch.c | 135 ++++++++++++++++++
.../selftests/bpf/progs/bpf_tracing_net.h | 3 +
.../selftests/bpf/progs/sock_iter_batch.c | 91 ++++++++++++
.../testing/selftests/bpf/progs/test_jhash.h | 31 ++++
5 files changed, 270 insertions(+), 12 deletions(-)
create mode 100644 tools/testing/selftests/bpf/prog_tests/sock_iter_batch.c
create mode 100644 tools/testing/selftests/bpf/progs/sock_iter_batch.c
--
2.34.1
Powered by blists - more mailing lists