From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Borkmann Subject: Re: [PATCH bpf-next] xsk: proper AF_XDP socket teardown ordering Date: Mon, 8 Oct 2018 10:11:18 +0200 Message-ID: <3259ea12-193f-ffdd-55ac-cbf2f0ef4e49@iogearbox.net> References: <20181005112515.3009-1-bjorn.topel@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Cc: =?UTF-8?B?QmrDtnJuIFTDtnBlbA==?= , magnus.karlsson@intel.com, magnus.karlsson@gmail.com To: =?UTF-8?B?QmrDtnJuIFTDtnBlbA==?= , ast@kernel.org, netdev@vger.kernel.org, brouer@redhat.com Return-path: Received: from www62.your-server.de ([213.133.104.62]:58000 "EHLO www62.your-server.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725983AbeJHPVw (ORCPT ); Mon, 8 Oct 2018 11:21:52 -0400 In-Reply-To: <20181005112515.3009-1-bjorn.topel@gmail.com> Content-Language: en-US Sender: netdev-owner@vger.kernel.org List-ID: On 10/05/2018 01:25 PM, Björn Töpel wrote: > From: Björn Töpel > > The AF_XDP socket struct can exist in three different, implicit > states: setup, bound and released. Setup is prior the socket has been > bound to a device. Bound is when the socket is active for receive and > send. Released is when the process/userspace side of the socket is > released, but the sock object is still lingering, e.g. when there is a > reference to the socket in an XSKMAP after process termination. > > The Rx fast-path code uses the "dev" member of struct xdp_sock to > check whether a socket is bound or relased, and the Tx code uses the > struct xdp_umem "xsk_list" member in conjunction with "dev" to > determine the state of a socket. > > However, the transition from bound to released did not tear the socket > down in correct order. > > On the Rx side "dev" was cleared after synchronize_net() making the > synchronization useless. On the Tx side, the internal queues were > destroyed prior removing them from the "xsk_list". > > This commit corrects the cleanup order, and by doing so > xdp_del_sk_umem() can be simplified and one synchronize_net() can be > removed. > > Fixes: 965a99098443 ("xsk: add support for bind for Rx") > Fixes: ac98d8aab61b ("xsk: wire upp Tx zero-copy functions") > Reported-by: Jesper Dangaard Brouer > Signed-off-by: Björn Töpel Applied to bpf-next, thanks Björn!