[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20190815093014.31174-1-bjorn.topel@gmail.com>
Date: Thu, 15 Aug 2019 11:30:12 +0200
From: Björn Töpel <bjorn.topel@...il.com>
To: ast@...nel.org, daniel@...earbox.net, netdev@...r.kernel.org
Cc: Björn Töpel <bjorn.topel@...il.com>,
magnus.karlsson@...el.com, jonathan.lemon@...il.com,
bjorn.topel@...el.com, bruce.richardson@...el.com,
songliubraving@...com, bpf@...r.kernel.org
Subject: [PATCH bpf-next v5 0/2] net: xdp: XSKMAP improvements
This series (v5 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.
Thanks,
Björn
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)
v4->v5: Avoid use-after-free on XSKMAP self-assignment [1]. (Daniel)
Removed redundant assignment in xsk_map_update_elem().
Variable name consistency; Use map_entry everywhere.
[1] https://lore.kernel.org/bpf/20190802081154.30962-1-bjorn.topel@gmail.com/T/#mc68439e97bc07fa301dad9fc4850ed5aa392f385
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 | 133 ++++++++++++++++++++++++++++++++++-------
net/xdp/xsk.c | 50 ++++++++++++++++
3 files changed, 179 insertions(+), 22 deletions(-)
--
2.20.1
Powered by blists - more mailing lists