From: arikachen Date: Mon, 23 Aug 2021 05:45:21 +0000 (+0800) Subject: af_xdp: fix xsk_socket__delete left un-cleanup X-Git-Tag: v22.02-rc0~103 X-Git-Url: https://gerrit.fd.io/r/gitweb?a=commitdiff_plain;h=a3f93e2fe318c096bc2eb50dd315d01064340681;p=vpp.git af_xdp: fix xsk_socket__delete left un-cleanup Type: fix while xsk fd closed by clib_file_del_by_index fisrt, xsk_get_mmap_offsets will get wrong off in xsk_socket__delete, so munmap wrong place. Signed-off-by: arikachen Change-Id: I95464e9b4eec99814bd32d7402c0d60a0605cef5 --- diff --git a/src/plugins/af_xdp/device.c b/src/plugins/af_xdp/device.c index 7a10bce4290..2600170704b 100644 --- a/src/plugins/af_xdp/device.c +++ b/src/plugins/af_xdp/device.c @@ -101,9 +101,6 @@ af_xdp_delete_if (vlib_main_t * vm, af_xdp_device_t * ad) ethernet_delete_interface (vnm, ad->hw_if_index); } - for (i = 0; i < ad->rxq_num; i++) - clib_file_del_by_index (&file_main, vec_elt (ad->rxqs, i).file_index); - for (i = 0; i < ad->txq_num; i++) clib_spinlock_free (&vec_elt (ad->txqs, i).lock); @@ -113,6 +110,9 @@ af_xdp_delete_if (vlib_main_t * vm, af_xdp_device_t * ad) vec_foreach (umem, ad->umem) xsk_umem__delete (*umem); + for (i = 0; i < ad->rxq_num; i++) + clib_file_del_by_index (&file_main, vec_elt (ad->rxqs, i).file_index); + if (ad->bpf_obj) { bpf_set_link_xdp_fd (ad->linux_ifindex, -1, 0);