From nobody Sun Feb 8 14:31:19 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 28C8BC77B73 for ; Wed, 24 May 2023 19:49:23 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235661AbjEXTtV (ORCPT ); Wed, 24 May 2023 15:49:21 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53598 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229551AbjEXTtS (ORCPT ); Wed, 24 May 2023 15:49:18 -0400 Received: from smtp-out1.suse.de (smtp-out1.suse.de [IPv6:2001:67c:2178:6::1c]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7AD91135; Wed, 24 May 2023 12:49:17 -0700 (PDT) Received: from relay2.suse.de (relay2.suse.de [149.44.160.134]) by smtp-out1.suse.de (Postfix) with ESMTP id 34C90219A6; Wed, 24 May 2023 19:49:16 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1684957756; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding; bh=Oe6PbmV+u0O1cIClXtL/J9wL1QeLe0YddSZe0fda1gI=; b=FcQIqFkcUjGOxN14HJUnQV3up919Be3U+MMGnlk6758fwqlx6v5djo7OKFr7AxkVYMAKRq SThlNn8xxkzKn32+zXcnuuVjgE5Ir6L8SUdoe3eijtbndMy02zuoAR+BZEaK0ndIepLZlX qLD03WyHoYROpAlXF0XuXjNY/TxYgmc= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1684957756; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding; bh=Oe6PbmV+u0O1cIClXtL/J9wL1QeLe0YddSZe0fda1gI=; b=G03yMKHGQFbB97ZwrChpX6CxgzePmJ7RdJ1jIXE80oIyib5SunDjvnF/y0euknYcviueAQ VmdTZw3Oxhh73TBA== Received: from adalid.arch.suse.de (adalid.arch.suse.de [10.161.8.13]) by relay2.suse.de (Postfix) with ESMTP id E98D32C141; Wed, 24 May 2023 19:49:15 +0000 (UTC) From: Thomas Bogendoerfer To: "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Asmaa Mnebhi , Liming Sun , David Thompson , netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 net] net: mellanox: mlxbf_gige: Fix skb_panic splat under memory pressure Date: Wed, 24 May 2023 21:49:08 +0200 Message-Id: <20230524194908.147145-1-tbogendoerfer@suse.de> X-Mailer: git-send-email 2.35.3 MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Do skb_put() after a new skb has been successfully allocated otherwise the reused skb leads to skb_panics or incorrect packet sizes. Fixes: f92e1869d74e ("Add Mellanox BlueField Gigabit Ethernet driver") Signed-off-by: Thomas Bogendoerfer Reviewed-by: Simon Horman --- Changes in v2: - moved skb_put() after dma_unmap_single() - added Fixes tag - fixed typos in commit log .../ethernet/mellanox/mlxbf_gige/mlxbf_gige_rx.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige_rx.c b/dri= vers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige_rx.c index afa3b92a6905..0d5a41a2ae01 100644 --- a/drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige_rx.c +++ b/drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige_rx.c @@ -245,12 +245,6 @@ static bool mlxbf_gige_rx_packet(struct mlxbf_gige *pr= iv, int *rx_pkts) =20 skb =3D priv->rx_skb[rx_pi_rem]; =20 - skb_put(skb, datalen); - - skb->ip_summed =3D CHECKSUM_NONE; /* device did not checksum packet */ - - skb->protocol =3D eth_type_trans(skb, netdev); - /* Alloc another RX SKB for this same index */ rx_skb =3D mlxbf_gige_alloc_skb(priv, MLXBF_GIGE_DEFAULT_BUF_SZ, &rx_buf_dma, DMA_FROM_DEVICE); @@ -259,6 +253,13 @@ static bool mlxbf_gige_rx_packet(struct mlxbf_gige *pr= iv, int *rx_pkts) priv->rx_skb[rx_pi_rem] =3D rx_skb; dma_unmap_single(priv->dev, *rx_wqe_addr, MLXBF_GIGE_DEFAULT_BUF_SZ, DMA_FROM_DEVICE); + + skb_put(skb, datalen); + + skb->ip_summed =3D CHECKSUM_NONE; /* device did not checksum packet */ + + skb->protocol =3D eth_type_trans(skb, netdev); + *rx_wqe_addr =3D rx_buf_dma; } else if (rx_cqe & MLXBF_GIGE_RX_CQE_PKT_STATUS_MAC_ERR) { priv->stats.rx_mac_errors++; --=20 2.35.3