From patchwork Tue Jul 20 09:37:43 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Georgi Valkov X-Patchwork-Id: 481936 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-17.7 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI, MENTIONS_GIT_HOSTING, SPF_HELO_NONE, SPF_PASS, URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 0173DC636C8 for ; Tue, 20 Jul 2021 09:45:02 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id DBC7D60230 for ; Tue, 20 Jul 2021 09:45:01 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235161AbhGTJEW (ORCPT ); Tue, 20 Jul 2021 05:04:22 -0400 Received: from pop36.abv.bg ([194.153.145.227]:33928 "EHLO pop36.abv.bg" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234806AbhGTJEV (ORCPT ); Tue, 20 Jul 2021 05:04:21 -0400 X-Greylist: delayed 419 seconds by postgrey-1.27 at vger.kernel.org; Tue, 20 Jul 2021 05:04:19 EDT Received: from smtp.abv.bg (localhost [127.0.0.1]) by pop36.abv.bg (Postfix) with ESMTP id 16953180AA90; Tue, 20 Jul 2021 12:37:48 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=abv.bg; s=smtp-out; t=1626773868; bh=mPlI6hgEp7grsSif9s2vkTZdz6gtzjPUEOp/oqiK5UI=; h=From:Subject:Date:Cc:To:From; b=svJWeBryW3FrNGb9165p1tCW8zASIGZ97zrAJc8f3I+/ASFCZU5ZzLQbsRsVazTcb RY2FG8Sr0Zq32szO8+1FjFgeWYFs4QgMgOyhvjHQ37maKKqyqPQBrB0do+CESvWiwh jkAAoUlXynzSByzMxYu1yufo+WH4WsEP1S6t5x2Y= X-HELO: smtpclient.apple Authentication-Results: smtp.abv.bg; auth=pass (plain) smtp.auth=gvalkov@abv.bg Received: from 212-39-89-148.ip.btc-net.bg (HELO smtpclient.apple) (212.39.89.148) by smtp.abv.bg (qpsmtpd/0.96) with ESMTPSA (ECDHE-RSA-AES256-GCM-SHA384 encrypted); Tue, 20 Jul 2021 12:37:48 +0300 From: Georgi Valkov Mime-Version: 1.0 (Mac OS X Mail 14.0 \(3654.100.0.2.22\)) Subject: ipheth: fix EOVERFLOW in ipheth_rcvbulk_callback Message-Id: Date: Tue, 20 Jul 2021 12:37:43 +0300 Cc: =?utf-8?b?0JPQtdC+0YDQs9C4INCT0LXQvtGA0LPQuNC10LIg0JLRitC70LrQvtCy?= , corsac@corsac.net, matti.vuorela@bitfactor.fi, stable@vger.kernel.org To: davem@davemloft.net, kuba@kernel.org, mhabets@solarflare.com, luc.vanoostenryck@gmail.com, snelson@pensando.io, mst@redhat.com, linux-usb@vger.kernel.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org X-Mailer: Apple Mail (2.3654.100.0.2.22) Precedence: bulk List-ID: X-Mailing-List: linux-usb@vger.kernel.org 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 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 --- 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;