All the mail mirrored from lore.kernel.org
 help / color / mirror / Atom feed
From: "Nelson, Shannon" <shannon.nelson@amd.com>
To: darinzon@amazon.com, David Miller <davem@davemloft.net>,
	Jakub Kicinski <kuba@kernel.org>,
	netdev@vger.kernel.org
Cc: "Woodhouse, David" <dwmw@amazon.com>,
	"Machulsky, Zorik" <zorik@amazon.com>,
	"Matushevsky, Alexander" <matua@amazon.com>,
	Saeed Bshara <saeedb@amazon.com>, "Wilson, Matt" <msw@amazon.com>,
	"Liguori, Anthony" <aliguori@amazon.com>,
	"Bshara, Nafea" <nafea@amazon.com>,
	"Belgazal, Netanel" <netanel@amazon.com>,
	"Saidi, Ali" <alisaidi@amazon.com>,
	"Herrenschmidt, Benjamin" <benh@amazon.com>,
	"Kiyanovski, Arthur" <akiyano@amazon.com>,
	"Dagan, Noam" <ndagan@amazon.com>,
	"Agroskin, Shay" <shayagr@amazon.com>,
	"Itzko, Shahar" <itzko@amazon.com>,
	"Abboud, Osama" <osamaabb@amazon.com>,
	"Ostrovsky, Evgeny" <evostrov@amazon.com>,
	"Tabachnik, Ofir" <ofirt@amazon.com>,
	Netanel Belgazal <netanel@annapurnalabs.com>,
	Sameeh Jubran <sameehj@amazon.com>
Subject: Re: [PATCH v1 net 3/4] net: ena: Fix incorrect descriptor free behavior
Date: Wed, 10 Apr 2024 14:52:19 -0700	[thread overview]
Message-ID: <65a68ce7-9be3-46c0-b33a-adf5c9796bc8@amd.com> (raw)
In-Reply-To: <20240410091358.16289-4-darinzon@amazon.com>

On 4/10/2024 2:13 AM, darinzon@amazon.com wrote:
> From: David Arinzon <darinzon@amazon.com>
> 
> ENA has two types of TX queues:
> - queues which only process TX packets arriving from the network stack
> - queues which only process TX packets forwarded to it by XDP_REDIRECT
>    or XDP_TX instructions
> 
> The ena_free_tx_bufs() cycles through all descriptors in a TX queue
> and unmaps + frees every descriptor that hasn't been acknowledged yet
> by the device (uncompleted TX transactions).
> The function assumes that the processed TX queue is necessarily from
> the first category listed above and ends up using napi_consume_skb()
> for descriptors belonging to an XDP specific queue.
> 
> This patch solves a bug in which, in case of a VF reset, the
> descriptors aren't freed correctly, leading to crashes.
> 
> Fixes: 548c4940b9f1 ("net: ena: Implement XDP_TX action")
> Signed-off-by: Shay Agroskin <shayagr@amazon.com>
> Signed-off-by: David Arinzon <darinzon@amazon.com>


Reviewed-by: Shannon Nelson <shannon.nelson@amd.com>


> ---
>   drivers/net/ethernet/amazon/ena/ena_netdev.c | 14 +++++++++++---
>   1 file changed, 11 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/net/ethernet/amazon/ena/ena_netdev.c b/drivers/net/ethernet/amazon/ena/ena_netdev.c
> index 59befc0f..be5acfa4 100644
> --- a/drivers/net/ethernet/amazon/ena/ena_netdev.c
> +++ b/drivers/net/ethernet/amazon/ena/ena_netdev.c
> @@ -718,8 +718,11 @@ void ena_unmap_tx_buff(struct ena_ring *tx_ring,
>   static void ena_free_tx_bufs(struct ena_ring *tx_ring)
>   {
>          bool print_once = true;
> +       bool is_xdp_ring;
>          u32 i;
> 
> +       is_xdp_ring = ENA_IS_XDP_INDEX(tx_ring->adapter, tx_ring->qid);
> +
>          for (i = 0; i < tx_ring->ring_size; i++) {
>                  struct ena_tx_buffer *tx_info = &tx_ring->tx_buffer_info[i];
> 
> @@ -739,10 +742,15 @@ static void ena_free_tx_bufs(struct ena_ring *tx_ring)
> 
>                  ena_unmap_tx_buff(tx_ring, tx_info);
> 
> -               dev_kfree_skb_any(tx_info->skb);
> +               if (is_xdp_ring)
> +                       xdp_return_frame(tx_info->xdpf);
> +               else
> +                       dev_kfree_skb_any(tx_info->skb);
>          }
> -       netdev_tx_reset_queue(netdev_get_tx_queue(tx_ring->netdev,
> -                                                 tx_ring->qid));
> +
> +       if (!is_xdp_ring)
> +               netdev_tx_reset_queue(netdev_get_tx_queue(tx_ring->netdev,
> +                                                         tx_ring->qid));
>   }
> 
>   static void ena_free_all_tx_bufs(struct ena_adapter *adapter)
> --
> 2.40.1
> 
> 

  reply	other threads:[~2024-04-10 21:52 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-04-10  9:13 [PATCH v1 net 0/4] ENA driver bug fixes darinzon
2024-04-10  9:13 ` [PATCH v1 net 1/4] net: ena: Fix potential sign extension issue darinzon
2024-04-10 21:49   ` Nelson, Shannon
2024-04-10  9:13 ` [PATCH v1 net 2/4] net: ena: Wrong missing IO completions check order darinzon
2024-04-10 21:51   ` Nelson, Shannon
2024-04-10  9:13 ` [PATCH v1 net 3/4] net: ena: Fix incorrect descriptor free behavior darinzon
2024-04-10 21:52   ` Nelson, Shannon [this message]
2024-04-10  9:13 ` [PATCH v1 net 4/4] net: ena: Set tx_info->xdpf value to NULL darinzon
2024-04-10 21:53   ` Nelson, Shannon
2024-04-11  9:40 ` [PATCH v1 net 0/4] ENA driver bug fixes patchwork-bot+netdevbpf

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=65a68ce7-9be3-46c0-b33a-adf5c9796bc8@amd.com \
    --to=shannon.nelson@amd.com \
    --cc=akiyano@amazon.com \
    --cc=aliguori@amazon.com \
    --cc=alisaidi@amazon.com \
    --cc=benh@amazon.com \
    --cc=darinzon@amazon.com \
    --cc=davem@davemloft.net \
    --cc=dwmw@amazon.com \
    --cc=evostrov@amazon.com \
    --cc=itzko@amazon.com \
    --cc=kuba@kernel.org \
    --cc=matua@amazon.com \
    --cc=msw@amazon.com \
    --cc=nafea@amazon.com \
    --cc=ndagan@amazon.com \
    --cc=netanel@amazon.com \
    --cc=netanel@annapurnalabs.com \
    --cc=netdev@vger.kernel.org \
    --cc=ofirt@amazon.com \
    --cc=osamaabb@amazon.com \
    --cc=saeedb@amazon.com \
    --cc=sameehj@amazon.com \
    --cc=shayagr@amazon.com \
    --cc=zorik@amazon.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.