On Thu, Sep 1, 2022 at 10:56 PM Ian Rogers irogers@google.com wrote:
The put lowers the reference count to 0 and frees ctx, reading it afterwards is invalid. Move the put after the uses and determine the last use by the reference count being 1.
Thanks for spotting and fixing this Ian.
Acked-by: Magnus Karlsson magnus.karlsson@intel.com
Fixes: 39e940d4abfa ("selftests/xsk: Destroy BPF resources only when ctx refcount drops to 0") Signed-off-by: Ian Rogers irogers@google.com
tools/testing/selftests/bpf/xsk.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/tools/testing/selftests/bpf/xsk.c b/tools/testing/selftests/bpf/xsk.c index f2721a4ae7c5..0b3ff49c740d 100644 --- a/tools/testing/selftests/bpf/xsk.c +++ b/tools/testing/selftests/bpf/xsk.c @@ -1237,15 +1237,15 @@ void xsk_socket__delete(struct xsk_socket *xsk) ctx = xsk->ctx; umem = ctx->umem;
xsk_put_ctx(ctx, true);
if (!ctx->refcount) {
if (ctx->refcount == 1) { xsk_delete_bpf_maps(xsk); close(ctx->prog_fd); if (ctx->has_bpf_link) close(ctx->link_fd); }
xsk_put_ctx(ctx, true);
err = xsk_get_mmap_offsets(xsk->fd, &off); if (!err) { if (xsk->rx) {
-- 2.37.2.789.g6183377224-goog