Re: [PATCH bpf-next v5 0/2] net: xdp: XSKMAP improvements

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 8/15/19 11:30 AM, Björn Töpel wrote:
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@xxxxxxxxx/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(-)


Looks better, applied thanks!



[Index of Archives]     [Linux Samsung SoC]     [Linux Rockchip SoC]     [Linux Actions SoC]     [Linux for Synopsys ARC Processors]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]


  Powered by Linux