This series (v4 and counting) add two improvements for the XSKMAP, used by AF_XDP sockets. 1. Automatic cleanup when an AF_XDP socket goes out of scope/is released. Instead of require that the user manually clears the "released" state socket from the map, this is done automatically. Each socket tracks which maps it resides in, and remove itself from those maps at relase. A notable implementation change, is that the sockets references the map, instead of the map referencing the sockets. Which implies that when the XSKMAP is freed, it is by definition cleared of sockets. 2. The XSKMAP did not honor the BPF_EXIST/BPF_NOEXIST flag on insert, which this patch addresses. Daniel, I (hopefully...) addressed the issues you found in [1]. Instead of popping the tracked map, it's simply read. Then, the socket is removed iff it's the same socket, i.e. no updates has occurred. There are some code comments in the xsk_delete_from_maps() function as well. Thanks, Björn [1] https://lore.kernel.org/bpf/2417e1ab-16fa-d3ed-564e-1a50c4cb6717@xxxxxxxxxxxxx/ v1->v2: Fixed deadlock and broken cleanup. (Daniel) v2->v3: Rebased onto bpf-next v3->v4: {READ, WRITE}_ONCE consistency. (Daniel) Socket release/map update race. (Daniel) Björn Töpel (2): xsk: remove AF_XDP socket from map when the socket is released xsk: support BPF_EXIST and BPF_NOEXIST flags in XSKMAP include/net/xdp_sock.h | 18 ++++++ kernel/bpf/xskmap.c | 130 ++++++++++++++++++++++++++++++++++------- net/xdp/xsk.c | 48 +++++++++++++++ 3 files changed, 175 insertions(+), 21 deletions(-) -- 2.20.1