Received: by 2002:a05:6902:102b:0:0:0:0 with SMTP id x11csp3027417ybt; Mon, 29 Jun 2020 13:16:53 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzK45OSgumCl7/BITek71bDBB+7gNUxX6UkipnZ0BpAUv/5dnc2j/nFbxC+NPt9s+Olgiqs X-Received: by 2002:a17:906:66d0:: with SMTP id k16mr15927277ejp.293.1593461813098; Mon, 29 Jun 2020 13:16:53 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1593461813; cv=none; d=google.com; s=arc-20160816; b=zMhk2B7tZfCZT2hCdUul6YqAVF3Dxuf33nokcKR5C+Kh2kJCuOG1iAyCSvtJfL2Ek8 +moQwftrhz+HtO1IvdpymrFg//DzrK6GEV67+rOJ/rG0J8tyXW9RrMjW/6/5lTNtcggP PfLwKNtZw37Rhw7uX2+YJDvXHahIBwiwJPRKTU161Rnd1OcXdRH5/iECk9sTISiMBC+M 4wSydzflCIdIHX1uS6bIUtZGDpa8SCN+9FBvceWPrYW83kdfHff9pi6tp0mj0NXKTegj xEpYqnuM0o2wk0tCe+1PMfON0ns3FGkJt4+ElK3a4L7NLp1Ayvi5P2VctJxY36AewPoG NPCQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=hFEtkHkp3m9eKnkK0lMCigUdbh1QBVIqs8ucrRE1wPo=; b=PToHRhJv2LT2pjAfcrGwFsgghoB9ORe4rX0+PtXUJ+NDLmLgayoZ+ySvl9hAMMuHLd JPKbFw9xpUDL1W/lq4QIhW/8cslqpv2NBOFNkcnJFHsx1FVjKen1qCjCktWP5mmhxi9P CShYlkWUhe5jGMM72ahsczabrezJfwtr4yB9FT7XveYgGoCKUIpteaRk3ZI+dbMPOl2P /fUDAzTiyvl1lc8DSIwI2wphBcSaNyKhQ1QCfhsUJ22yvio2QGDm6PaDnbv1iarIEoc1 /8tN60Kv3zqj/fFzF7VnCGNKjz1Qw9FAGqWPdZ/a6vYY6v9LvxyA0D01L1LBmhFNIWEk eI2Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=q3z0ohRx; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id z5si366350eju.750.2020.06.29.13.16.30; Mon, 29 Jun 2020 13:16:53 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=q3z0ohRx; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731123AbgF2UNM (ORCPT + 99 others); Mon, 29 Jun 2020 16:13:12 -0400 Received: from mail.kernel.org ([198.145.29.99]:40564 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1732853AbgF2TaT (ORCPT ); Mon, 29 Jun 2020 15:30:19 -0400 Received: from sasha-vm.mshome.net (c-73-47-72-35.hsd1.nh.comcast.net [73.47.72.35]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 2AC2225277; Mon, 29 Jun 2020 15:36:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1593444985; bh=PGkYko3d3ejYniUkKP3fS77pedRU/GzuZqgHSgSUwJc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=q3z0ohRxRLn7qkoGxeb2pSEaijkA8PxGbGtyBg5cLGH8imvYWVhzfC/DVJKgfSA8o /D/pE1+aQg0hdsi7WaXRKMU0FVxplNRxOYnjMfQu4QbV/vRuV3OeOoC82nPAaCd58q FPHtqWvPDQoHHsEZSM7ueI6C0VgNLLarHOPqXvLY= From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Doug Berger , Florian Fainelli , "David S . Miller" , Sasha Levin Subject: [PATCH 4.19 085/131] net: bcmgenet: use hardware padding of runt frames Date: Mon, 29 Jun 2020 11:34:16 -0400 Message-Id: <20200629153502.2494656-86-sashal@kernel.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200629153502.2494656-1-sashal@kernel.org> References: <20200629153502.2494656-1-sashal@kernel.org> MIME-Version: 1.0 X-KernelTest-Patch: http://kernel.org/pub/linux/kernel/v4.x/stable-review/patch-4.19.131-rc1.gz X-KernelTest-Tree: git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git X-KernelTest-Branch: linux-4.19.y X-KernelTest-Patches: git://git.kernel.org/pub/scm/linux/kernel/git/stable/stable-queue.git X-KernelTest-Version: 4.19.131-rc1 X-KernelTest-Deadline: 2020-07-01T15:34+00:00 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Doug Berger [ Upstream commit 20d1f2d1b024f6be199a3bedf1578a1d21592bc5 ] When commit 474ea9cafc45 ("net: bcmgenet: correctly pad short packets") added the call to skb_padto() it should have been located before the nr_frags parameter was read since that value could be changed when padding packets with lengths between 55 and 59 bytes (inclusive). The use of a stale nr_frags value can cause corruption of the pad data when tx-scatter-gather is enabled. This corruption of the pad can cause invalid checksum computation when hardware offload of tx-checksum is also enabled. Since the original reason for the padding was corrected by commit 7dd399130efb ("net: bcmgenet: fix skb_len in bcmgenet_xmit_single()") we can remove the software padding all together and make use of hardware padding of short frames as long as the hardware also always appends the FCS value to the frame. Fixes: 474ea9cafc45 ("net: bcmgenet: correctly pad short packets") Signed-off-by: Doug Berger Acked-by: Florian Fainelli Signed-off-by: David S. Miller Signed-off-by: Sasha Levin --- drivers/net/ethernet/broadcom/genet/bcmgenet.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/drivers/net/ethernet/broadcom/genet/bcmgenet.c b/drivers/net/ethernet/broadcom/genet/bcmgenet.c index 40e8ef984b624..c7667017c1a3f 100644 --- a/drivers/net/ethernet/broadcom/genet/bcmgenet.c +++ b/drivers/net/ethernet/broadcom/genet/bcmgenet.c @@ -1593,11 +1593,6 @@ static netdev_tx_t bcmgenet_xmit(struct sk_buff *skb, struct net_device *dev) goto out; } - if (skb_padto(skb, ETH_ZLEN)) { - ret = NETDEV_TX_OK; - goto out; - } - /* Retain how many bytes will be sent on the wire, without TSB inserted * by transmit checksum offload */ @@ -1646,6 +1641,9 @@ static netdev_tx_t bcmgenet_xmit(struct sk_buff *skb, struct net_device *dev) len_stat = (size << DMA_BUFLENGTH_SHIFT) | (priv->hw_params->qtag_mask << DMA_TX_QTAG_SHIFT); + /* Note: if we ever change from DMA_TX_APPEND_CRC below we + * will need to restore software padding of "runt" packets + */ if (!i) { len_stat |= DMA_TX_APPEND_CRC | DMA_SOP; if (skb->ip_summed == CHECKSUM_PARTIAL) -- 2.25.1