mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-27 17:18:59 +00:00
7b31c2e9ed
Backport Russell King's series [1] net: mvneta: reduce size of TSO header allocation to pending-5.15 to fix random crashes on Turris Omnia. This also backports two patches that are dependencies to this series: net: mvneta: Delete unused variable net: mvneta: fix potential double-frees in mvneta_txq_sw_deinit() [1] https://lore.kernel.org/netdev/ZCsbJ4nG+So%2Fn9qY@shell.armlinux.org.uk/ Signed-off-by: Marek Behún <kabel@kernel.org> Signed-off-by: Christian Lamparter <chunkeey@gmail.com> (squashed)
43 lines
1.4 KiB
Diff
43 lines
1.4 KiB
Diff
From e3c77d0a1b635d114c147fd2078afb57ed558b81 Mon Sep 17 00:00:00 2001
|
|
From: "Russell King (Oracle)" <rmk+kernel@armlinux.org.uk>
|
|
Date: Mon, 3 Apr 2023 19:30:25 +0100
|
|
Subject: [PATCH 2/5] net: mvneta: mark mapped and tso buffers separately
|
|
|
|
Mark dma-mapped skbs and TSO buffers separately, so we can use
|
|
buf->type to identify their differences.
|
|
|
|
Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
|
|
---
|
|
drivers/net/ethernet/marvell/mvneta.c | 6 ++++--
|
|
1 file changed, 4 insertions(+), 2 deletions(-)
|
|
|
|
--- a/drivers/net/ethernet/marvell/mvneta.c
|
|
+++ b/drivers/net/ethernet/marvell/mvneta.c
|
|
@@ -607,6 +607,7 @@ struct mvneta_rx_desc {
|
|
#endif
|
|
|
|
enum mvneta_tx_buf_type {
|
|
+ MVNETA_TYPE_TSO,
|
|
MVNETA_TYPE_SKB,
|
|
MVNETA_TYPE_XDP_TX,
|
|
MVNETA_TYPE_XDP_NDO,
|
|
@@ -1852,7 +1853,8 @@ static void mvneta_txq_bufs_free(struct
|
|
dma_unmap_single(pp->dev->dev.parent,
|
|
tx_desc->buf_phys_addr,
|
|
tx_desc->data_size, DMA_TO_DEVICE);
|
|
- if (buf->type == MVNETA_TYPE_SKB && buf->skb) {
|
|
+ if ((buf->type == MVNETA_TYPE_TSO ||
|
|
+ buf->type == MVNETA_TYPE_SKB) && buf->skb) {
|
|
bytes_compl += buf->skb->len;
|
|
pkts_compl++;
|
|
dev_kfree_skb_any(buf->skb);
|
|
@@ -2607,7 +2609,7 @@ mvneta_tso_put_hdr(struct sk_buff *skb,
|
|
tx_desc->command |= MVNETA_TXD_F_DESC;
|
|
tx_desc->buf_phys_addr = txq->tso_hdrs_phys +
|
|
txq->txq_put_index * TSO_HEADER_SIZE;
|
|
- buf->type = MVNETA_TYPE_SKB;
|
|
+ buf->type = MVNETA_TYPE_TSO;
|
|
buf->skb = NULL;
|
|
|
|
mvneta_txq_inc_put(txq);
|