From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 3C8CDA0542 for ; Fri, 18 Nov 2022 08:02:02 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 39ACF4067B; Fri, 18 Nov 2022 08:02:02 +0100 (CET) Received: from smtp-relay-internal-0.canonical.com (smtp-relay-internal-0.canonical.com [185.125.188.122]) by mails.dpdk.org (Postfix) with ESMTP id C69CD4021F for ; Fri, 18 Nov 2022 08:02:00 +0100 (CET) Received: from mail-oo1-f70.google.com (mail-oo1-f70.google.com [209.85.161.70]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-internal-0.canonical.com (Postfix) with ESMTPS id 942BA3F1C0 for ; Fri, 18 Nov 2022 07:02:00 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1668754920; bh=kmMuPzCdOPxUel9iK28fPjD5fshn8O08TQzBm9idv9M=; h=MIME-Version:References:In-Reply-To:From:Date:Message-ID:Subject: To:Cc:Content-Type; b=UdetJ4xRoppVkbCzHYTHvqUJarkQnW7kr4fIyeuGXsg7Bov6KKKvVwcfm5F9T4Tan ecYX5YFarOWMRXXCf3gvYqjyTlyo8VdxqIifVTL4b0XQKXlKTxGvHrrSXR+YQvHUSt iQdhlACVK/yqvZOu3GnICmkGVlblkDlqPo3Qb47DjDD4aBHsOUaJR72ddBpi8Njn0u 66ia8POctHz3C3rAEQQlZBaMEdb+MDvUvpAG0t/titJD1k+NKZNOzfK15Vb+fYOGVo 0g/lmeVzDSC8Cw3gqCyCK8uCwicOpdgigid2nJJSt42NCs1wj0SLxtgTsDRW7ffOMX rvv3o/cTOVaaA== Received: by mail-oo1-f70.google.com with SMTP id w18-20020a4a6d52000000b0049f209d84bbso1941983oof.7 for ; Thu, 17 Nov 2022 23:02:00 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=kmMuPzCdOPxUel9iK28fPjD5fshn8O08TQzBm9idv9M=; b=ODz9TDOQ1QQB1HfhUYJRVWtbL5Tx8bTOIMptAlHU61qJXX1kcxjgz+FO+gR+jKBIfy NFxW/keRJuYMuxZ36mBW271LhFn7Jil3WqVaCFjemreHgmtttzLaZ4Jxv1GXzPQnx3/v vOkwB00Eg1/OEGnj6m6XZsWKsdyWfHSuz49qByppTo9H6eUayVHNPTY1AyrrHfzBMErw B8Fi7eY2wF3K2A1T9oLqCpsBfEktJRnWtCOArU4ftA6ZKcugG914jxLl/RCr+FcLb67j zl/eQDWDu0KM3MRTeBFkRKu6SrhJ5M8NZpcLSv35ZgiPdXr3TLvO0sZxBK+Jixev32B5 JGbw== X-Gm-Message-State: ANoB5plTR5pF4mgb+/H+hFF5KZ/fL7oTeCxtZcl5dJz5BiRRJbLf5Fw2 mwRklw+kT3JC+fYMNF9dIv2/hCmx+kodBCHxvggbz4pY2Q1BZuAfCV6SyhC4jfrsu8v0Lg+42l9 sVIDq6LDfvxIRz4baKsPKl3rtRmKRP2I1+M0bO9O5 X-Received: by 2002:a05:6871:4411:b0:131:caf1:947 with SMTP id nd17-20020a056871441100b00131caf10947mr6436207oab.204.1668754919554; Thu, 17 Nov 2022 23:01:59 -0800 (PST) X-Google-Smtp-Source: AA0mqf7qH8egVC0HpiMxgmdIDlVOdVB3yPSmSk8dwgWvApK0zw8nn7uOnjiW/0/UzpvO85/ijUlCy3g320W0B9Tn6t4= X-Received: by 2002:a05:6871:4411:b0:131:caf1:947 with SMTP id nd17-20020a056871441100b00131caf10947mr6436196oab.204.1668754919356; Thu, 17 Nov 2022 23:01:59 -0800 (PST) MIME-Version: 1.0 References: <20221117142701.3145276-1-niklas.soderlund@corigine.com> In-Reply-To: <20221117142701.3145276-1-niklas.soderlund@corigine.com> From: Christian Ehrhardt Date: Fri, 18 Nov 2022 08:01:33 +0100 Message-ID: Subject: Re: [PATCH 19.11] net/nfp: fix memory leak in Rx To: =?UTF-8?Q?Niklas_S=C3=B6derlund?= Cc: stable@dpdk.org, oss-drivers@corigine.com, Long Wu , Chaoyong He Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: patches for DPDK stable branches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: stable-bounces@dpdk.org On Thu, Nov 17, 2022 at 3:27 PM Niklas S=C3=B6derlund wrote: > > From: Long Wu > > [ upstream commit bb340f56fcb7bac9ec04c1c1ca7a2a4f3012c848 ] Thanks, applied. > > nfp_net_recv_pkts() should not return a value that less than 0 and the > inappropriate return value in receive loop also causes the memory leak. > Modify code to avoid return a value less than 0. Furthermore, When > nfp_net_recv_pkts() break out from the receive loop because of packet > problems, a rte_mbuf will not be freed and it will cause memory leak. > Free the rte_mbuf before break out. > > Fixes: b812daadad0d ("nfp: add Rx and Tx") > > Signed-off-by: Long Wu > Reviewed-by: Chaoyong He > Signed-off-by: Niklas S=C3=B6derlund > --- > drivers/net/nfp/nfp_net.c | 9 +++++---- > 1 file changed, 5 insertions(+), 4 deletions(-) > > diff --git a/drivers/net/nfp/nfp_net.c b/drivers/net/nfp/nfp_net.c > index 76222ca5affd..f2fdff56636c 100644 > --- a/drivers/net/nfp/nfp_net.c > +++ b/drivers/net/nfp/nfp_net.c > @@ -2035,8 +2035,9 @@ nfp_net_recv_pkts(void *rx_queue, struct rte_mbuf *= *rx_pkts, uint16_t nb_pkts) > struct rte_mbuf *new_mb; > uint16_t nb_hold; > uint64_t dma_addr; > - int avail; > + uint16_t avail; > > + avail =3D 0; > rxq =3D rx_queue; > if (unlikely(rxq =3D=3D NULL)) { > /* > @@ -2044,11 +2045,10 @@ nfp_net_recv_pkts(void *rx_queue, struct rte_mbuf= **rx_pkts, uint16_t nb_pkts) > * enabled. But the queue needs to be configured > */ > RTE_LOG_DP(ERR, PMD, "RX Bad queue\n"); > - return -EINVAL; > + return avail; > } > > hw =3D rxq->hw; > - avail =3D 0; > nb_hold =3D 0; > > while (avail < nb_pkts) { > @@ -2114,7 +2114,8 @@ nfp_net_recv_pkts(void *rx_queue, struct rte_mbuf *= *rx_pkts, uint16_t nb_pkts) > hw->rx_offset, > rxq->mbuf_size - hw->rx_offset, > mb->data_len); > - return -EINVAL; > + rte_pktmbuf_free(mb); > + break; > } > > /* Filling the received mbuf with packet info */ > -- > 2.38.1 > --=20 Christian Ehrhardt Senior Staff Engineer, Ubuntu Server Canonical Ltd