Patch "idpf: fix checksums set in idpf_rx_rsc()" has been added to the 6.13-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

    idpf: fix checksums set in idpf_rx_rsc()

to the 6.13-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:
     idpf-fix-checksums-set-in-idpf_rx_rsc.patch
and it can be found in the queue-6.13 subdirectory.

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



commit e59d82870b3199b2b8ec9eb97437244c0ff63c32
Author: Eric Dumazet <edumazet@xxxxxxxxxx>
Date:   Wed Feb 26 22:12:52 2025 +0000

    idpf: fix checksums set in idpf_rx_rsc()
    
    [ Upstream commit 674fcb4f4a7e3e277417a01788cc6daae47c3804 ]
    
    idpf_rx_rsc() uses skb_transport_offset(skb) while the transport header
    is not set yet.
    
    This triggers the following warning for CONFIG_DEBUG_NET=y builds.
    
    DEBUG_NET_WARN_ON_ONCE(!skb_transport_header_was_set(skb))
    
    [   69.261620] WARNING: CPU: 7 PID: 0 at ./include/linux/skbuff.h:3020 idpf_vport_splitq_napi_poll (include/linux/skbuff.h:3020) idpf
    [   69.261629] Modules linked in: vfat fat dummy bridge intel_uncore_frequency_tpmi intel_uncore_frequency_common intel_vsec_tpmi idpf intel_vsec cdc_ncm cdc_eem cdc_ether usbnet mii xhci_pci xhci_hcd ehci_pci ehci_hcd libeth
    [   69.261644] CPU: 7 UID: 0 PID: 0 Comm: swapper/7 Tainted: G S      W          6.14.0-smp-DEV #1697
    [   69.261648] Tainted: [S]=CPU_OUT_OF_SPEC, [W]=WARN
    [   69.261650] RIP: 0010:idpf_vport_splitq_napi_poll (include/linux/skbuff.h:3020) idpf
    [   69.261677] ? __warn (kernel/panic.c:242 kernel/panic.c:748)
    [   69.261682] ? idpf_vport_splitq_napi_poll (include/linux/skbuff.h:3020) idpf
    [   69.261687] ? report_bug (lib/bug.c:?)
    [   69.261690] ? handle_bug (arch/x86/kernel/traps.c:285)
    [   69.261694] ? exc_invalid_op (arch/x86/kernel/traps.c:309)
    [   69.261697] ? asm_exc_invalid_op (arch/x86/include/asm/idtentry.h:621)
    [   69.261700] ? __pfx_idpf_vport_splitq_napi_poll (drivers/net/ethernet/intel/idpf/idpf_txrx.c:4011) idpf
    [   69.261704] ? idpf_vport_splitq_napi_poll (include/linux/skbuff.h:3020) idpf
    [   69.261708] ? idpf_vport_splitq_napi_poll (drivers/net/ethernet/intel/idpf/idpf_txrx.c:3072) idpf
    [   69.261712] __napi_poll (net/core/dev.c:7194)
    [   69.261716] net_rx_action (net/core/dev.c:7265)
    [   69.261718] ? __qdisc_run (net/sched/sch_generic.c:293)
    [   69.261721] ? sched_clock (arch/x86/include/asm/preempt.h:84 arch/x86/kernel/tsc.c:288)
    [   69.261726] handle_softirqs (kernel/softirq.c:561)
    
    Fixes: 3a8845af66edb ("idpf: add RX splitq napi poll support")
    Signed-off-by: Eric Dumazet <edumazet@xxxxxxxxxx>
    Cc: Alan Brady <alan.brady@xxxxxxxxx>
    Cc: Joshua Hay <joshua.a.hay@xxxxxxxxx>
    Cc: Willem de Bruijn <willemb@xxxxxxxxxx>
    Acked-by: Przemek Kitszel <przemyslaw.kitszel@xxxxxxxxx>
    Link: https://patch.msgid.link/20250226221253.1927782-1-edumazet@xxxxxxxxxx
    Signed-off-by: Jakub Kicinski <kuba@xxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/net/ethernet/intel/idpf/idpf_txrx.c b/drivers/net/ethernet/intel/idpf/idpf_txrx.c
index 9be6a6b59c4e1..977741c414980 100644
--- a/drivers/net/ethernet/intel/idpf/idpf_txrx.c
+++ b/drivers/net/ethernet/intel/idpf/idpf_txrx.c
@@ -3013,7 +3013,6 @@ static int idpf_rx_rsc(struct idpf_rx_queue *rxq, struct sk_buff *skb,
 	skb_shinfo(skb)->gso_size = rsc_seg_len;
 
 	skb_reset_network_header(skb);
-	len = skb->len - skb_transport_offset(skb);
 
 	if (ipv4) {
 		struct iphdr *ipv4h = ip_hdr(skb);
@@ -3022,6 +3021,7 @@ static int idpf_rx_rsc(struct idpf_rx_queue *rxq, struct sk_buff *skb,
 
 		/* Reset and set transport header offset in skb */
 		skb_set_transport_header(skb, sizeof(struct iphdr));
+		len = skb->len - skb_transport_offset(skb);
 
 		/* Compute the TCP pseudo header checksum*/
 		tcp_hdr(skb)->check =
@@ -3031,6 +3031,7 @@ static int idpf_rx_rsc(struct idpf_rx_queue *rxq, struct sk_buff *skb,
 
 		skb_shinfo(skb)->gso_type = SKB_GSO_TCPV6;
 		skb_set_transport_header(skb, sizeof(struct ipv6hdr));
+		len = skb->len - skb_transport_offset(skb);
 		tcp_hdr(skb)->check =
 			~tcp_v6_check(len, &ipv6h->saddr, &ipv6h->daddr, 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