From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.7 required=3.0 tests=BAYES_00,DKIM_ADSP_CUSTOM_MED, FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 55CE7C433E7 for ; Fri, 10 Jul 2020 16:34:53 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 349C420657 for ; Fri, 10 Jul 2020 16:34:53 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727995AbgGJQew (ORCPT ); Fri, 10 Jul 2020 12:34:52 -0400 Received: from smtp7.emailarray.com ([65.39.216.66]:42408 "EHLO smtp7.emailarray.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727771AbgGJQew (ORCPT ); Fri, 10 Jul 2020 12:34:52 -0400 Received: (qmail 72068 invoked by uid 89); 10 Jul 2020 16:34:50 -0000 Received: from unknown (HELO localhost) (amxlbW9uQGZsdWdzdmFtcC5jb21AMTYzLjExNC4xMzIuMw==) (POLARISLOCAL) by smtp7.emailarray.com with SMTP; 10 Jul 2020 16:34:50 -0000 Date: Fri, 10 Jul 2020 09:34:48 -0700 From: Jonathan Lemon To: Magnus Karlsson Cc: bjorn.topel@intel.com, ast@kernel.org, daniel@iogearbox.net, netdev@vger.kernel.org, A.Zema@falconvsystems.com Subject: Re: [PATCH bpf v2] xsk: fix memory leak and packet loss in Tx skb path Message-ID: <20200710163448.7bkuohez2lqkf5tt@bsd-mbp> References: <1594363554-4076-1-git-send-email-magnus.karlsson@intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1594363554-4076-1-git-send-email-magnus.karlsson@intel.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org On Fri, Jul 10, 2020 at 08:45:54AM +0200, Magnus Karlsson wrote: > In the skb Tx path, transmission of a packet is performed with > dev_direct_xmit(). When QUEUE_STATE_FROZEN is set in the transmit > routines, it returns NETDEV_TX_BUSY signifying that it was not > possible to send the packet now, please try later. Unfortunately, the > xsk transmit code discarded the packet, missed to free the skb, and > returned EBUSY to the application. Fix this memory leak and > unnecessary packet loss, by not discarding the packet in the Tx ring, > freeing the allocated skb, and return EAGAIN. As EAGAIN is returned to the > application, it can then retry the send operation and the packet will > finally be sent as we will likely not be in the QUEUE_STATE_FROZEN > state anymore. So EAGAIN tells the application that the packet was not > discarded from the Tx ring and that it needs to call send() > again. EBUSY, on the other hand, signifies that the packet was not > sent and discarded from the Tx ring. The application needs to put the > packet on the Tx ring again if it wants it to be sent. > > Fixes: 35fcde7f8deb ("xsk: support for Tx") > Signed-off-by: Magnus Karlsson > Reported-by: Arkadiusz Zema > Suggested-by: Arkadiusz Zema Acked-by: Jonathan Lemon -- Jonathan