Patch "usbnet: ipheth: remove extraneous rx URB length check" has been added to the 6.6-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

    usbnet: ipheth: remove extraneous rx URB length check

to the 6.6-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:
     usbnet-ipheth-remove-extraneous-rx-urb-length-check.patch
and it can be found in the queue-6.6 subdirectory.

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



commit 7d7cede29b4fd7186a613e2a1423cd75936f313c
Author: Foster Snowhill <forst@xxxxxx>
Date:   Tue Aug 6 19:28:06 2024 +0200

    usbnet: ipheth: remove extraneous rx URB length check
    
    [ Upstream commit 655b46d7a39ac6f049698b27c1568c0f7ff85d1e ]
    
    Rx URB length was already checked in ipheth_rcvbulk_callback_legacy()
    and ipheth_rcvbulk_callback_ncm(), depending on the current mode.
    The check in ipheth_rcvbulk_callback() was thus mostly a duplicate.
    
    The only place in ipheth_rcvbulk_callback() where we care about the URB
    length is for the initial control frame. These frames are always 4 bytes
    long. This has been checked as far back as iOS 4.2.1 on iPhone 3G.
    
    Remove the extraneous URB length check. For control frames, check for
    the specific 4-byte length instead.
    
    Signed-off-by: Foster Snowhill <forst@xxxxxx>
    Tested-by: Georgi Valkov <gvalkov@xxxxxxxxx>
    Signed-off-by: David S. Miller <davem@xxxxxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/net/usb/ipheth.c b/drivers/net/usb/ipheth.c
index 6eeef10edada..017255615508 100644
--- a/drivers/net/usb/ipheth.c
+++ b/drivers/net/usb/ipheth.c
@@ -286,11 +286,6 @@ static void ipheth_rcvbulk_callback(struct urb *urb)
 		return;
 	}
 
-	if (urb->actual_length <= IPHETH_IP_ALIGN) {
-		dev->net->stats.rx_length_errors++;
-		return;
-	}
-
 	/* RX URBs starting with 0x00 0x01 do not encapsulate Ethernet frames,
 	 * but rather are control frames. Their purpose is not documented, and
 	 * they don't affect driver functionality, okay to drop them.
@@ -298,7 +293,8 @@ static void ipheth_rcvbulk_callback(struct urb *urb)
 	 * URB received from the bulk IN endpoint.
 	 */
 	if (unlikely
-		(((char *)urb->transfer_buffer)[0] == 0 &&
+		(urb->actual_length == 4 &&
+		 ((char *)urb->transfer_buffer)[0] == 0 &&
 		 ((char *)urb->transfer_buffer)[1] == 1))
 		goto rx_submit;
 




[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