Patch "igb: cope with large MAX_SKB_FRAGS" has been added to the 6.10-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

    igb: cope with large MAX_SKB_FRAGS

to the 6.10-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:
     igb-cope-with-large-max_skb_frags.patch
and it can be found in the queue-6.10 subdirectory.

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



commit 56511d3763ed54c73d1b3071758fa92fdcecaa49
Author: Paolo Abeni <pabeni@xxxxxxxxxx>
Date:   Fri Aug 16 17:20:34 2024 +0200

    igb: cope with large MAX_SKB_FRAGS
    
    [ Upstream commit 8aba27c4a5020abdf60149239198297f88338a8d ]
    
    Sabrina reports that the igb driver does not cope well with large
    MAX_SKB_FRAG values: setting MAX_SKB_FRAG to 45 causes payload
    corruption on TX.
    
    An easy reproducer is to run ssh to connect to the machine.  With
    MAX_SKB_FRAGS=17 it works, with MAX_SKB_FRAGS=45 it fails.  This has
    been reported originally in
    https://bugzilla.redhat.com/show_bug.cgi?id=2265320
    
    The root cause of the issue is that the driver does not take into
    account properly the (possibly large) shared info size when selecting
    the ring layout, and will try to fit two packets inside the same 4K
    page even when the 1st fraglist will trump over the 2nd head.
    
    Address the issue by checking if 2K buffers are insufficient.
    
    Fixes: 3948b05950fd ("net: introduce a config option to tweak MAX_SKB_FRAGS")
    Reported-by: Jan Tluka <jtluka@xxxxxxxxxx>
    Reported-by: Jirka Hladky <jhladky@xxxxxxxxxx>
    Reported-by: Sabrina Dubroca <sd@xxxxxxxxxxxxxxx>
    Tested-by: Sabrina Dubroca <sd@xxxxxxxxxxxxxxx>
    Tested-by: Corinna Vinschen <vinschen@xxxxxxxxxx>
    Signed-off-by: Paolo Abeni <pabeni@xxxxxxxxxx>
    Signed-off-by: Corinna Vinschen <vinschen@xxxxxxxxxx>
    Link: https://patch.msgid.link/20240816152034.1453285-1-vinschen@xxxxxxxxxx
    Signed-off-by: Jakub Kicinski <kuba@xxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/net/ethernet/intel/igb/igb_main.c b/drivers/net/ethernet/intel/igb/igb_main.c
index fce2930ae6af7..b6aa449aa56af 100644
--- a/drivers/net/ethernet/intel/igb/igb_main.c
+++ b/drivers/net/ethernet/intel/igb/igb_main.c
@@ -4809,6 +4809,7 @@ static void igb_set_rx_buffer_len(struct igb_adapter *adapter,
 
 #if (PAGE_SIZE < 8192)
 	if (adapter->max_frame_size > IGB_MAX_FRAME_BUILD_SKB ||
+	    IGB_2K_TOO_SMALL_WITH_PADDING ||
 	    rd32(E1000_RCTL) & E1000_RCTL_SBP)
 		set_ring_uses_large_buffer(rx_ring);
 #endif




[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