Patch "mlxsw: spectrum_ptp: Add missing verification before pushing Tx header" has been added to the 6.11-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    mlxsw: spectrum_ptp: Add missing verification before pushing Tx header

to the 6.11-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     mlxsw-spectrum_ptp-add-missing-verification-before-p.patch
and it can be found in the queue-6.11 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 3e3fb6985de856dc13d8b274b0e852c287f143ca
Author: Amit Cohen <amcohen@xxxxxxxxxx>
Date:   Fri Oct 25 16:26:25 2024 +0200

    mlxsw: spectrum_ptp: Add missing verification before pushing Tx header
    
    [ Upstream commit 0a66e5582b5102c4d7b866b977ff7c850c1174ce ]
    
    Tx header should be pushed for each packet which is transmitted via
    Spectrum ASICs. The cited commit moved the call to skb_cow_head() from
    mlxsw_sp_port_xmit() to functions which handle Tx header.
    
    In case that mlxsw_sp->ptp_ops->txhdr_construct() is used to handle Tx
    header, and txhdr_construct() is mlxsw_sp_ptp_txhdr_construct(), there is
    no call for skb_cow_head() before pushing Tx header size to SKB. This flow
    is relevant for Spectrum-1 and Spectrum-4, for PTP packets.
    
    Add the missing call to skb_cow_head() to make sure that there is both
    enough room to push the Tx header and that the SKB header is not cloned and
    can be modified.
    
    An additional set will be sent to net-next to centralize the handling of
    the Tx header by pushing it to every packet just before transmission.
    
    Cc: Richard Cochran <richardcochran@xxxxxxxxx>
    Fixes: 24157bc69f45 ("mlxsw: Send PTP packets as data packets to overcome a limitation")
    Signed-off-by: Amit Cohen <amcohen@xxxxxxxxxx>
    Signed-off-by: Petr Machata <petrm@xxxxxxxxxx>
    Link: https://patch.msgid.link/5145780b07ebbb5d3b3570f311254a3a2d554a44.1729866134.git.petrm@xxxxxxxxxx
    Signed-off-by: Jakub Kicinski <kuba@xxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
index 5b174cb95eb8a..d94081c7658e3 100644
--- a/drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
+++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c
@@ -16,6 +16,7 @@
 #include "spectrum.h"
 #include "spectrum_ptp.h"
 #include "core.h"
+#include "txheader.h"
 
 #define MLXSW_SP1_PTP_CLOCK_CYCLES_SHIFT	29
 #define MLXSW_SP1_PTP_CLOCK_FREQ_KHZ		156257 /* 6.4nSec */
@@ -1684,6 +1685,12 @@ int mlxsw_sp_ptp_txhdr_construct(struct mlxsw_core *mlxsw_core,
 				 struct sk_buff *skb,
 				 const struct mlxsw_tx_info *tx_info)
 {
+	if (skb_cow_head(skb, MLXSW_TXHDR_LEN)) {
+		this_cpu_inc(mlxsw_sp_port->pcpu_stats->tx_dropped);
+		dev_kfree_skb_any(skb);
+		return -ENOMEM;
+	}
+
 	mlxsw_sp_txhdr_construct(skb, tx_info);
 	return 0;
 }




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux