All of lore.kernel.org
 help / color / mirror / Atom feed
* ipheth: fix EOVERFLOW in ipheth_rcvbulk_callback
@ 2021-07-20  9:37 Georgi Valkov
  2021-07-20  9:58 ` Greg KH
  2021-07-20 10:22 ` Jakub Kicinski
  0 siblings, 2 replies; 14+ messages in thread
From: Georgi Valkov @ 2021-07-20  9:37 UTC (permalink / raw)
  To: davem, kuba, mhabets, luc.vanoostenryck, snelson, mst, linux-usb,
	netdev, linux-kernel
  Cc: Георги
	Георгиев
	Вълков,
	corsac, matti.vuorela, stable

ipheth: fix EOVERFLOW in ipheth_rcvbulk_callback
https://github.com/openwrt/openwrt/pull/4084


From dd109ded2b526636fff438d33433ab64ffd21583 Mon Sep 17 00:00:00 2001
From: Georgi Valkov <gvalkov@abv.bg>
Date: Fri, 16 Apr 2021 20:44:36 +0300
Subject: [PATCH] ipheth: fix EOVERFLOW in ipheth_rcvbulk_callback

When rx_buf is allocated we need to account for IPHETH_IP_ALIGN,
which reduces the usable size by 2 bytes. Otherwise we have 1512
bytes usable instead of 1514, and if we receive more than 1512
bytes, ipheth_rcvbulk_callback is called with status -EOVERFLOW,
after which the driver malfunctiones and all communication stops.

Fixes: ipheth 2-1:4.2: ipheth_rcvbulk_callback: urb status: -75

Signed-off-by: Georgi Valkov <gvalkov@abv.bg>
---
 drivers/net/usb/ipheth.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/net/usb/ipheth.c b/drivers/net/usb/ipheth.c
index 207e59e74935..06d9f19ca142 100644
--- a/drivers/net/usb/ipheth.c
+++ b/drivers/net/usb/ipheth.c
@@ -121,7 +121,7 @@ static int ipheth_alloc_urbs(struct ipheth_device *iphone)
 	if (tx_buf == NULL)
 		goto free_rx_urb;
 
-	rx_buf = usb_alloc_coherent(iphone->udev, IPHETH_BUF_SIZE,
+	rx_buf = usb_alloc_coherent(iphone->udev, IPHETH_BUF_SIZE + IPHETH_IP_ALIGN,
 				    GFP_KERNEL, &rx_urb->transfer_dma);
 	if (rx_buf == NULL)
 		goto free_tx_buf;
@@ -146,7 +146,7 @@ static int ipheth_alloc_urbs(struct ipheth_device *iphone)
 
 static void ipheth_free_urbs(struct ipheth_device *iphone)
 {
-	usb_free_coherent(iphone->udev, IPHETH_BUF_SIZE, iphone->rx_buf,
+	usb_free_coherent(iphone->udev, IPHETH_BUF_SIZE + IPHETH_IP_ALIGN, iphone->rx_buf,
 			  iphone->rx_urb->transfer_dma);
 	usb_free_coherent(iphone->udev, IPHETH_BUF_SIZE, iphone->tx_buf,
 			  iphone->tx_urb->transfer_dma);
@@ -317,7 +317,7 @@ static int ipheth_rx_submit(struct ipheth_device *dev, gfp_t mem_flags)
 
 	usb_fill_bulk_urb(dev->rx_urb, udev,
 			  usb_rcvbulkpipe(udev, dev->bulk_in),
-			  dev->rx_buf, IPHETH_BUF_SIZE,
+			  dev->rx_buf, IPHETH_BUF_SIZE + IPHETH_IP_ALIGN,
 			  ipheth_rcvbulk_callback,
 			  dev);
 	dev->rx_urb->transfer_flags |= URB_NO_TRANSFER_DMA_MAP;
-- 
2.31.1



^ permalink raw reply related	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2022-01-31 21:52 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-07-20  9:37 ipheth: fix EOVERFLOW in ipheth_rcvbulk_callback Georgi Valkov
2021-07-20  9:58 ` Greg KH
2021-07-20 10:22 ` Jakub Kicinski
2021-07-20 11:39   ` Georgi Valkov
2021-07-20 11:49     ` Greg KH
2021-07-20 12:46       ` Georgi Valkov
2021-07-20 12:54         ` Greg KH
2021-07-20 13:12           ` Georgi Valkov
2022-01-31  9:45             ` Jan Kiszka
2022-01-31 17:27               ` Jakub Kicinski
2022-01-31 17:35                 ` Jan Kiszka
2022-01-31 17:47                   ` Jakub Kicinski
2022-01-31 18:46                     ` Jan Kiszka
2022-01-31 21:43                   ` Georgi Valkov

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.