From patchwork Sun Mar 9 13:42:12 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Taehee Yoo X-Patchwork-Id: 14008469 Received: from mail-pl1-f180.google.com (mail-pl1-f180.google.com [209.85.214.180]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id AAD138BE7; Sun, 9 Mar 2025 13:43:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.180 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741527801; cv=none; b=YUgz5QxrYnHmm7b15rYHB4EPIEo/vq339i52Sep3uxl2n8ZymvOyyGEBYdTJBSU5V3SqjEsywOfcDVK6o6FxcMLOlYq6cCsDj8LLLph2+0J4GBNLyVYRq9fAeRUTzXYuS8p1+E1vhvZxJQ+SOkkfqlyHC4XSYU5OFewtnQcmm8Q= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741527801; c=relaxed/simple; bh=dd9nUiJrwXMv99iv7txmQUTTNpeC1ohhXLb8ePqj/Jc=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=eoJwn6YPIuzL3n4sB7ln4Zu8DVvYgDBL01CXc7Zk0qYZU2cSgnezFSAw6FE6VipatEWx3LJ3aZ4i8TEqDneAD2wRZpKH2rC6IBowPWBFBOVEucePzRMas7EBT35eENeH2UbOnt1qrg/Qr9eUfMvyv6WjOw+JKDugnH4D6N22tY0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=fHEUaToV; arc=none smtp.client-ip=209.85.214.180 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="fHEUaToV" Received: by mail-pl1-f180.google.com with SMTP id d9443c01a7336-22435603572so24714045ad.1; Sun, 09 Mar 2025 06:43:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741527799; x=1742132599; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=S/ein0vWHrPHczNXpwPQ4iwCKQ6o7ZMTYQitBGnwAaU=; b=fHEUaToVD7Fa4dr8cCQdMMAAjJ1b9yY8WBO8jTzd9pXaloqF2tghgorJdq+blnPKfg nH/7eMipeeEc8csYZR7LD6HZQZheCPYjwlfcRGfaN1hUVgvwN4ExWWZwj0Uaf66P8hpP FR5j7zA33fHdWhRO4EOZXYkv6gSMyKUJwAcYsHqVd9IA/2GNmoNjm1Md0ha5y/GWwstk 6DFHktFUeCepaLMwykaR1IlifexOMPkMUUtoHsTgWB3BwAGMEQJX/V1AA4K01alF1C96 tXo4AcghbrKeqG+jrA99fqLX1URRlAenViIMZoHfo2Xw0SrW4agrzEm4c13g5LL4rcjU iQ+A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741527799; x=1742132599; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=S/ein0vWHrPHczNXpwPQ4iwCKQ6o7ZMTYQitBGnwAaU=; b=NL73XhlKKpK78pH8C+lhzeHMA50XxpfxqaxAkzx+3uAKRTlCSxmWjfivm/9xCWxO8P aOc5HSbmcVSZY5M35BWLTlJYaTrongVOLYtutyAiVNhC91e69+fTMsri6obh24zTG6rI j+69rvgh+7hIos/O4fIVPV9F8taRVB6BLHeGtAKDO6McMVR2KqYB2x63EVEj3CQbs2wH TqILYio1ORmXYDJWe6QR7mMdLYeCBdFJLNYptF5OmF2ZexXzXc8lfz82amOc0KL2APc9 CFsA44uq8bi2an+H0Vgzoy/q7q+0YIjeBVMWxicPn/l9I7BxCkO3U5Tua6iSOkw5S5yP hd5w== X-Forwarded-Encrypted: i=1; AJvYcCUmetGDWr1uQxBhLMMn3QOOMVuTJJ1tcjre4uoZAFLtgmrQkinc2B0pMbmkuPU/HLvi6r2wAc1BYbtmQ3fBVJ0=@vger.kernel.org, AJvYcCWqoqoGRDOkwrAVfnnUjY4a1JTezcDVIpvYrOcYhGnWL+F4V17JdRkqJsZ6h/yAldEBhO4lKS0u@vger.kernel.org X-Gm-Message-State: AOJu0Yw8LgBRx7MrUxbOdDj4/kPM7k6Gg57VYa9gH/cWL2JYcWjVuCtJ bEdLodgS9fjdwymIW2Uxr+OxSV7dAyq/N+JZHQXxDkwla/3ojJMQ X-Gm-Gg: ASbGncugRTgVwsmJZ7/tGVGXYXcXpSldfgyhdhG0NSrkBC8nniGJn1w/3p8lidx5+qz V5krkuQTCb1WZR6U0oG/70IvcIqL/XJdCvfQEtJDPcDfBzjWE1pYmpDN2MjbqYtBZ7/itFAAfvw /4gM5scVzEmhi6Wguzba5omFfs5y0LRlaMIO5UxvXqagY6kpS7QIwOz4LGQRMEz/JleOkvgBosK f4IWBN057EX8mrEl1Xa9XMMmZrZwBDYbzO6B6ChScbzGo1kJoYO7Gr+o8gfQprseGThJXVyFHns K7MEO4IzZQ8gdIR6BDdbQ01aj5D4tqOhmCRXEGXUuRDx X-Google-Smtp-Source: AGHT+IG7QqRURU9bDEzB+kPspIXQCilR/msM8OTfOJpOftnOhxGf0IF3faS9zYcBOYQ7GsgXfMtGOA== X-Received: by 2002:a05:6a00:4b4a:b0:736:6ac4:d1ff with SMTP id d2e1a72fcca58-736aa9e7154mr17732210b3a.3.1741527798829; Sun, 09 Mar 2025 06:43:18 -0700 (PDT) Received: from ap.. ([182.213.254.91]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-736c41dda7csm2296841b3a.85.2025.03.09.06.43.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Mar 2025 06:43:18 -0700 (PDT) From: Taehee Yoo To: davem@davemloft.net, kuba@kernel.org, pabeni@redhat.com, edumazet@google.com, andrew+netdev@lunn.ch, michael.chan@broadcom.com, pavan.chebbi@broadcom.com, horms@kernel.org, shuah@kernel.org, netdev@vger.kernel.org, linux-kselftest@vger.kernel.org Cc: almasrymina@google.com, asml.silence@gmail.com, willemb@google.com, kaiyuanz@google.com, skhawaja@google.com, sdf@fomichev.me, gospo@broadcom.com, somnath.kotur@broadcom.com, dw@davidwei.uk, amritha.nambiar@intel.com, xuanzhuo@linux.alibaba.com, ap420073@gmail.com Subject: [PATCH v3 net 1/8] eth: bnxt: fix truesize for mb-xdp-pass case Date: Sun, 9 Mar 2025 13:42:12 +0000 Message-Id: <20250309134219.91670-2-ap420073@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250309134219.91670-1-ap420073@gmail.com> References: <20250309134219.91670-1-ap420073@gmail.com> Precedence: bulk X-Mailing-List: linux-kselftest@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 When mb-xdp is set and return is XDP_PASS, packet is converted from xdp_buff to sk_buff with xdp_update_skb_shared_info() in bnxt_xdp_build_skb(). bnxt_xdp_build_skb() passes incorrect truesize argument to xdp_update_skb_shared_info(). The truesize is calculated as BNXT_RX_PAGE_SIZE * sinfo->nr_frags but the skb_shared_info was wiped by napi_build_skb() before. So it stores sinfo->nr_frags before bnxt_xdp_build_skb() and use it instead of getting skb_shared_info from xdp_get_shared_info_from_buff(). Splat looks like: ------------[ cut here ]------------ WARNING: CPU: 2 PID: 0 at net/core/skbuff.c:6072 skb_try_coalesce+0x504/0x590 Modules linked in: xt_nat xt_tcpudp veth af_packet xt_conntrack nft_chain_nat xt_MASQUERADE nf_conntrack_netlink xfrm_user xt_addrtype nft_coms CPU: 2 UID: 0 PID: 0 Comm: swapper/2 Not tainted 6.14.0-rc2+ #3 RIP: 0010:skb_try_coalesce+0x504/0x590 Code: 4b fd ff ff 49 8b 34 24 40 80 e6 40 0f 84 3d fd ff ff 49 8b 74 24 48 40 f6 c6 01 0f 84 2e fd ff ff 48 8d 4e ff e9 25 fd ff ff <0f> 0b e99 RSP: 0018:ffffb62c4120caa8 EFLAGS: 00010287 RAX: 0000000000000003 RBX: ffffb62c4120cb14 RCX: 0000000000000ec0 RDX: 0000000000001000 RSI: ffffa06e5d7dc000 RDI: 0000000000000003 RBP: ffffa06e5d7ddec0 R08: ffffa06e6120a800 R09: ffffa06e7a119900 R10: 0000000000002310 R11: ffffa06e5d7dcec0 R12: ffffe4360575f740 R13: ffffe43600000000 R14: 0000000000000002 R15: 0000000000000002 FS: 0000000000000000(0000) GS:ffffa0755f700000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: 00007f147b76b0f8 CR3: 00000001615d4000 CR4: 00000000007506f0 PKRU: 55555554 Call Trace: ? __warn+0x84/0x130 ? skb_try_coalesce+0x504/0x590 ? report_bug+0x18a/0x1a0 ? handle_bug+0x53/0x90 ? exc_invalid_op+0x14/0x70 ? asm_exc_invalid_op+0x16/0x20 ? skb_try_coalesce+0x504/0x590 inet_frag_reasm_finish+0x11f/0x2e0 ip_defrag+0x37a/0x900 ip_local_deliver+0x51/0x120 ip_sublist_rcv_finish+0x64/0x70 ip_sublist_rcv+0x179/0x210 ip_list_rcv+0xf9/0x130 How to reproduce: ip link set $interface1 xdp obj xdp_pass.o ip link set $interface1 mtu 9000 up ip a a 10.0.0.1/24 dev $interface1 ip link set $interfac2 mtu 9000 up ip a a 10.0.0.2/24 dev $interface2 ping 10.0.0.1 -s 65000 Following ping.py patch adds xdp-mb-pass case. so ping.py is going to be able to reproduce this issue. Fixes: 1dc4c557bfed ("bnxt: adding bnxt_xdp_build_skb to build skb from multibuffer xdp_buff") Signed-off-by: Taehee Yoo --- v3: - Copy nr_frags instead of full copy. v2: - Do not use num_frags in the bnxt_xdp_build_skb(). drivers/net/ethernet/broadcom/bnxt/bnxt.c | 8 ++++++++ drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c index 7b8b5b39c7bb..6b5fe4ee7a99 100644 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c @@ -2038,6 +2038,7 @@ static int bnxt_rx_pkt(struct bnxt *bp, struct bnxt_cp_ring_info *cpr, struct rx_cmp_ext *rxcmp1; u32 tmp_raw_cons = *raw_cons; u16 cons, prod, cp_cons = RING_CMP(tmp_raw_cons); + struct skb_shared_info *sinfo; struct bnxt_sw_rx_bd *rx_buf; unsigned int len; u8 *data_ptr, agg_bufs, cmp_type; @@ -2164,6 +2165,7 @@ static int bnxt_rx_pkt(struct bnxt *bp, struct bnxt_cp_ring_info *cpr, false); if (!frag_len) goto oom_next_rx; + } xdp_active = true; } @@ -2173,6 +2175,12 @@ static int bnxt_rx_pkt(struct bnxt *bp, struct bnxt_cp_ring_info *cpr, rc = 1; goto next_rx; } + if (xdp_buff_has_frags(&xdp)) { + sinfo = xdp_get_shared_info_from_buff(&xdp); + agg_bufs = sinfo->nr_frags; + } else { + agg_bufs = 0; + } } if (len <= bp->rx_copybreak) { diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c b/drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c index e6c64e4bd66c..e9b49cb5b735 100644 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c @@ -476,7 +476,7 @@ bnxt_xdp_build_skb(struct bnxt *bp, struct sk_buff *skb, u8 num_frags, } xdp_update_skb_shared_info(skb, num_frags, sinfo->xdp_frags_size, - BNXT_RX_PAGE_SIZE * sinfo->nr_frags, + BNXT_RX_PAGE_SIZE * num_frags, xdp_buff_is_frag_pfmemalloc(xdp)); return skb; } From patchwork Sun Mar 9 13:42:13 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Taehee Yoo X-Patchwork-Id: 14008470 Received: from mail-pl1-f179.google.com (mail-pl1-f179.google.com [209.85.214.179]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 23E268BE7; Sun, 9 Mar 2025 13:43:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.179 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741527807; cv=none; b=mP0Amhg5Y5xkdiN+nXlVzlOmFwPDhawMYvgt+MpTt5ywOD5kKt/sicpFGSmJcIvWAVfGlCljbTaFJkb9UgCMVaKub1kKgNo1VolGX/31denTVMviKXLAofAFfZczVvDxUY9kjPSyJTtx16SCWgiFY0xf66zdLCmqTIv7iy/Elxs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741527807; c=relaxed/simple; bh=IiW1z7QIbJGiddiyv1XCRJoFgacKOPi9vD/2PdL89ik=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=gI4FnqzVWOR8CKhzOpp0V5PfRORPLTzjxyuaH51xB5RIz2OTW51zDao5TwQ0tIXBW2AMXeDLrsijsvoYFvD8J0wiKRHjsZQdzLYauZit1i9ALeiFFNPLjvsoEJTdYEillWtpDMx8kT9ks0GtJqIvkPHhLFQuENiL6Tmy7ztD7FI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=FFoyQc8p; arc=none smtp.client-ip=209.85.214.179 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="FFoyQc8p" Received: by mail-pl1-f179.google.com with SMTP id d9443c01a7336-225477548e1so14246125ad.0; Sun, 09 Mar 2025 06:43:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741527805; x=1742132605; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=MwGeHRAjPCpS0+2BXKkB+qb7ndcH4Z9OT1hF9NTi3r0=; b=FFoyQc8p3r2yl+6Dzdmrp/jcsDLzzqE3YTlxXSOSvN7YC5dRLzRcSDGqsScEGYLrou rSdEfo7TKdzgJe9Du4myA0esFH9/seqG5+tmcZsN8U4F7kXVP40oIiZJac26wnOWUZxH UmV7aXxWoRQCKmscNgZa48igPxztUPfmn6VxMKX8ofidATmplTwj8+piYViWaS9j6pCb 94b7ai7ZRalGuqvBP5vDs4BSCP9NQB2m+xOavVjrf25Z+9X9+c/Fquy5Vt7BwoMv8ZLQ EpGQ4Cy+v6qt+M6i9P1VtqoXX9/q60SjiV3TRlRU0WN9pMogKaFvZNcTp/Y/jlVGWAUQ 56BQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741527805; x=1742132605; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=MwGeHRAjPCpS0+2BXKkB+qb7ndcH4Z9OT1hF9NTi3r0=; b=TC4N01+c0JvGwbJcr9Art3NXhvv1sJvpRbWSEL8aY3VIfI9NsBE1RPZvd/kRDLHhqt Q7+QrZGsV+qdbBsW15vf1nfAiziBd+ff9qYJDk8qv6UtWeuSm0eH2iLm2uFCR2DVUnTU pVZYPsy4LzkGDz3B/kM0gKAmyaT5Zn5LRG3Hdv3Zoz8wkBOSwpNMI44IOSJB5+oRqH4b w+lqiLREgVJsfsBMvFLRB3QTO0/dO+MYoG5+3XqFTK3CRcXwVgvrP8rTVoJ+UgcEWEj7 JTaSUtH7RrIkNJwT+sRvgmAaQKwOf130vgOzhfKzTFEG9vk98iWStnbGIgN1EdlUmNZ3 7K0w== X-Forwarded-Encrypted: i=1; AJvYcCWq4UeuRwCEqq7jKrvkykDH5yZR9KyQgd1AebSvnbWkqQCYQlwTkZ6wbhDRmk8HYbX7nkFShMq5bofvXUEh6Vo=@vger.kernel.org, AJvYcCX48SQNINumVXHMhXJXQtCI3oN4Q9SzMIHXyMX9a+L/R4J2lC++BghQNOXsJnLtu3P6bJj0oOu5@vger.kernel.org X-Gm-Message-State: AOJu0Yw0DT2IGdGwZBmjW0YXYXuGiwxnQyUpKJ3KiKyYvSu3dMxu6o0K D1nZFjaEwa/Cm+tsD5spfWjxHhk0Ol4YNQ2fAz6hAbRDJ+qVlum+ X-Gm-Gg: ASbGncv535bMSQniLL5VoOV8Aawi0h2Osu/fEJen/kROkGsKZEaEctp6K/sd7USeVIl nT3hdI1rX/lC4+z1vuLunZ2TIlz4/xz3xGf3aQiLQn/5SrfiKESrFPn85WrddZ9HPyooNUYK6sI 4MJkMsnisNjrlylo+RRjAl5M/ZzoKnpLO0iKUU0SrKkK3LDwFdM+m132JXX1vbBHikY012wF/Q0 29GCFWAyeS9509CWCeXB20dPmITl8JJ5vtfxR5D6CohvQZcZ51w6c+QwZamY31URiJ87UcUYzJT 8nsT8uflnJ+BFqwH9My9I15zqb+YzmA3kS38EjsJfWxY X-Google-Smtp-Source: AGHT+IH8pAQtlrAoAQZ36dI09v94pbr/gAMN2+yP7tYnyKFdRQNRkudn08eaHyFDBHixE8PbbiBZPQ== X-Received: by 2002:a05:6a20:2d24:b0:1f5:7007:9eb7 with SMTP id adf61e73a8af0-1f57008366dmr3561369637.37.1741527805362; Sun, 09 Mar 2025 06:43:25 -0700 (PDT) Received: from ap.. ([182.213.254.91]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-736c41dda7csm2296841b3a.85.2025.03.09.06.43.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Mar 2025 06:43:24 -0700 (PDT) From: Taehee Yoo To: davem@davemloft.net, kuba@kernel.org, pabeni@redhat.com, edumazet@google.com, andrew+netdev@lunn.ch, michael.chan@broadcom.com, pavan.chebbi@broadcom.com, horms@kernel.org, shuah@kernel.org, netdev@vger.kernel.org, linux-kselftest@vger.kernel.org Cc: almasrymina@google.com, asml.silence@gmail.com, willemb@google.com, kaiyuanz@google.com, skhawaja@google.com, sdf@fomichev.me, gospo@broadcom.com, somnath.kotur@broadcom.com, dw@davidwei.uk, amritha.nambiar@intel.com, xuanzhuo@linux.alibaba.com, ap420073@gmail.com Subject: [PATCH v3 net 2/8] eth: bnxt: return fail if interface is down in bnxt_queue_mem_alloc() Date: Sun, 9 Mar 2025 13:42:13 +0000 Message-Id: <20250309134219.91670-3-ap420073@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250309134219.91670-1-ap420073@gmail.com> References: <20250309134219.91670-1-ap420073@gmail.com> Precedence: bulk X-Mailing-List: linux-kselftest@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 The bnxt_queue_mem_alloc() is called to allocate new queue memory when a queue is restarted. It internally accesses rx buffer descriptor corresponding to the index. The rx buffer descriptor is allocated and set when the interface is up and it's freed when the interface is down. So, if queue is restarted if interface is down, kernel panic occurs. Splat looks like: BUG: unable to handle page fault for address: 000000000000b240 #PF: supervisor read access in kernel mode #PF: error_code(0x0000) - not-present page PGD 0 P4D 0 Oops: Oops: 0000 [#1] PREEMPT SMP NOPTI CPU: 3 UID: 0 PID: 1563 Comm: ncdevmem2 Not tainted 6.14.0-rc2+ #9 844ddba6e7c459cafd0bf4db9a3198e Hardware name: ASUS System Product Name/PRIME Z690-P D4, BIOS 0603 11/01/2021 RIP: 0010:bnxt_queue_mem_alloc+0x3f/0x4e0 [bnxt_en] Code: 41 54 4d 89 c4 4d 69 c0 c0 05 00 00 55 48 89 f5 53 48 89 fb 4c 8d b5 40 05 00 00 48 83 ec 15 RSP: 0018:ffff9dcc83fef9e8 EFLAGS: 00010202 RAX: ffffffffc0457720 RBX: ffff934ed8d40000 RCX: 0000000000000000 RDX: 000000000000001f RSI: ffff934ea508f800 RDI: ffff934ea508f808 RBP: ffff934ea508f800 R08: 000000000000b240 R09: ffff934e84f4b000 R10: ffff9dcc83fefa30 R11: ffff934e84f4b000 R12: 000000000000001f R13: ffff934ed8d40ac0 R14: ffff934ea508fd40 R15: ffff934e84f4b000 FS: 00007fa73888c740(0000) GS:ffff93559f780000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: 000000000000b240 CR3: 0000000145a2e000 CR4: 00000000007506f0 PKRU: 55555554 Call Trace: ? __die+0x20/0x70 ? page_fault_oops+0x15a/0x460 ? exc_page_fault+0x6e/0x180 ? asm_exc_page_fault+0x22/0x30 ? __pfx_bnxt_queue_mem_alloc+0x10/0x10 [bnxt_en 7f85e76f4d724ba07471d7e39d9e773aea6597b7] ? bnxt_queue_mem_alloc+0x3f/0x4e0 [bnxt_en 7f85e76f4d724ba07471d7e39d9e773aea6597b7] netdev_rx_queue_restart+0xc5/0x240 net_devmem_bind_dmabuf_to_queue+0xf8/0x200 netdev_nl_bind_rx_doit+0x3a7/0x450 genl_family_rcv_msg_doit+0xd9/0x130 genl_rcv_msg+0x184/0x2b0 ? __pfx_netdev_nl_bind_rx_doit+0x10/0x10 ? __pfx_genl_rcv_msg+0x10/0x10 netlink_rcv_skb+0x54/0x100 genl_rcv+0x24/0x40 ... Reviewed-by: Somnath Kotur Reviewed-by: Jakub Kicinski Fixes: 2d694c27d32e ("bnxt_en: implement netdev_queue_mgmt_ops") Signed-off-by: Taehee Yoo Reviewed-by: Mina Almasry --- v3: - No changes. v2: - Add Review tags from Somnath and Jakub. drivers/net/ethernet/broadcom/bnxt/bnxt.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c index 6b5fe4ee7a99..acb9500ef930 100644 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c @@ -15447,6 +15447,9 @@ static int bnxt_queue_mem_alloc(struct net_device *dev, void *qmem, int idx) struct bnxt_ring_struct *ring; int rc; + if (!bp->rx_ring) + return -ENETDOWN; + rxr = &bp->rx_ring[idx]; clone = qmem; memcpy(clone, rxr, sizeof(*rxr)); From patchwork Sun Mar 9 13:42:14 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Taehee Yoo X-Patchwork-Id: 14008471 Received: from mail-pl1-f182.google.com (mail-pl1-f182.google.com [209.85.214.182]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 99C178BE7; Sun, 9 Mar 2025 13:43:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.182 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741527814; cv=none; b=ZCIJz0egcLWJ7ezU00g6gdYPlD/y4a0CxAIW4y2ufy1Pl/yUeGOo3gc1ArZ+nX248HDSwEJqZnxJvIy2srSfCgu1moM5+NCjdQnlFSjFAFhR75IgGmjDuI0x9aTo/g3U+68JpkIuNefjnswdh8E3ZUDL7LvUU/ir2E+ku16lg9U= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741527814; c=relaxed/simple; bh=V4S5Wbszx9Crg4SSCv4LIzdq3NnCxeq6NI4NrTWmsJA=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=fVw5dfVuGrjYpoM923gxCcfL6CW0SDqUfClYaIqzBj+FIxxWlp1Dsh9F2MtJCbd1i/O9BPUrMVnNFLoxUKCoxe8DDuxpadZn/vdqEJAolapWsP3pvn30cyCYn0gvBYsZLkNJFhlwvRucV5elkryVOsHQEb/Ll8k/WCzaFOiqaT4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=R9V5a1Rw; arc=none smtp.client-ip=209.85.214.182 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="R9V5a1Rw" Received: by mail-pl1-f182.google.com with SMTP id d9443c01a7336-22337bc9ac3so64257985ad.1; Sun, 09 Mar 2025 06:43:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741527812; x=1742132612; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=hbw+UcRX79oqiVRatXCi24pAZdme3lZtLxWT1phm2sY=; b=R9V5a1RwvYzx2BloQGDQilbDxoQ61Hk+sppOi1mRrxqV4jVfmEQr5/Ntbi8qpemX7r pADekivh/kOjOBQT2Gpf67f/K0jDhPkniIhV5YRnRb6LJ0nG8Fd33bKuJj0ASPhqN8ez 6c1YOb06v42kJIWbiacx1/MMOijrxSZHq9o0NHWxFg0KxLCc4iqbhKjsFBGy/rNb37wB 5WNSNXmXevxwWfeMsZXicge4sB95cATVUWdq/v++bybTxsKHUUqvFqFxikpRNwLG+SQa ctZ352cLP2QXl2yhFrSxhanEjcRioswT46xyKiQqMf/5xvmJtzXIcgQzp3rM/qocg5tF NUAg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741527812; x=1742132612; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=hbw+UcRX79oqiVRatXCi24pAZdme3lZtLxWT1phm2sY=; b=pFMihfdGP2CJcaLgPDvLVvt1TFcq2J+Rr625fJu3SyeHhKT5Mwb/XiOQ0G03jqToyf uzR1V+447GMX61yEfwR/N6NyoB4SyQ7WhMuF6ZuEK0b9MACstLbWCn9K0i8Fg+OjX1Hu 3vYK6/29ir16rJLr5AMwV2s22gEil1Yfo6qGYgXya/oV8V0s23Pcdl27oJe/9kF8Zccg cG08Od0+B7XRdUiB/LQmSsaGhPQnJgd3RFJYNw9HzTyBWFIGl02KKMQQSwny+YbR7eIA ofKr7bU1fdpKIdAGbDaY+S/2nXsLNw5464wACQFlvYiI/gckfCqAGF0SNiGXj6bVd6us T2cQ== X-Forwarded-Encrypted: i=1; AJvYcCWgoKMLqPZTYR/27HL7C8Foyjucfjz4+haq4sSyKrZhbsfyWV8jUqrNnNJCE+8U5qRttyxc17lz@vger.kernel.org, AJvYcCXlGbxktWYhg3CS0ZLoLhZ+o1fsMgwH/VfrWl5lYledj4t83YilIO475t6S9SyyIe1RHTtlSaiX++iCOd/a+kg=@vger.kernel.org X-Gm-Message-State: AOJu0Yy/ZfEDrF2bEcbbsfHLyf4yoTqIQiT6ZIqupbS3hLQ8lKWSULCE v294l5e/dAGk8Yb3f0lghDQj/A3MkkGdXs0AqKiVhwKcUWSaoAU+ X-Gm-Gg: ASbGnctLKPiAcSiUtsSQ6x/Hg5O/74GMclbsFgw+gRmDh6TqmP99QbcxHqnsA8WzuXc TuHoOfE8NVrD7hynSVtDrmuzbJHAvPGMNeRcPYfKT5OzDOVU9F4IzO0GSm8rG7NN6hP+k7xFnw2 rAz97i0ge8/Wqq4MLYNvTFznPJfqVpHY0UYlCneiiRxWGgbR8M5mQI5K535udm7ILHNMBKaNyh7 P/Br+ZMsh/5x4mrN+77DoJapV1EKelV4mfpydELRmNBoyDRqxCpp+8tz8z3Ma808fQ7bXPaf7ZD AM/gPzszppXqOxXyKJ4k0499zH6UG04UZQ== X-Google-Smtp-Source: AGHT+IGjJ+iLm6xXFkB3FceVjdYPK1rqjIyWbKpSrKB+/cJ3+hcrq/RxW54Dr18RqXt/EJRMm+OKzQ== X-Received: by 2002:a05:6a00:13a9:b0:736:3be3:3d77 with SMTP id d2e1a72fcca58-736aaac69ddmr12943998b3a.16.1741527811937; Sun, 09 Mar 2025 06:43:31 -0700 (PDT) Received: from ap.. ([182.213.254.91]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-736c41dda7csm2296841b3a.85.2025.03.09.06.43.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Mar 2025 06:43:31 -0700 (PDT) From: Taehee Yoo To: davem@davemloft.net, kuba@kernel.org, pabeni@redhat.com, edumazet@google.com, andrew+netdev@lunn.ch, michael.chan@broadcom.com, pavan.chebbi@broadcom.com, horms@kernel.org, shuah@kernel.org, netdev@vger.kernel.org, linux-kselftest@vger.kernel.org Cc: almasrymina@google.com, asml.silence@gmail.com, willemb@google.com, kaiyuanz@google.com, skhawaja@google.com, sdf@fomichev.me, gospo@broadcom.com, somnath.kotur@broadcom.com, dw@davidwei.uk, amritha.nambiar@intel.com, xuanzhuo@linux.alibaba.com, ap420073@gmail.com Subject: [PATCH v3 net 3/8] eth: bnxt: do not use BNXT_VNIC_NTUPLE unconditionally in queue restart logic Date: Sun, 9 Mar 2025 13:42:14 +0000 Message-Id: <20250309134219.91670-4-ap420073@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250309134219.91670-1-ap420073@gmail.com> References: <20250309134219.91670-1-ap420073@gmail.com> Precedence: bulk X-Mailing-List: linux-kselftest@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 When a queue is restarted, it sets MRU to 0 for stopping packet flow. MRU variable is a member of vnic_info[], the first vnic_info is default and the second is ntuple. Only when ntuple is enabled(ethtool -K eth0 ntuple on), vnic_info for ntuple is allocated in init logic. The bp->nr_vnics indicates how many vnic_info are allocated. However bnxt_queue_{start | stop}() accesses vnic_info[BNXT_VNIC_NTUPLE] regardless of ntuple state. Reviewed-by: Somnath Kotur Fixes: b9d2956e869c ("bnxt_en: stop packet flow during bnxt_queue_stop/start") Signed-off-by: Taehee Yoo --- v3: - Add Review tags from Somnath. v2: - No changes. drivers/net/ethernet/broadcom/bnxt/bnxt.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c index acb9500ef930..218109ee1c23 100644 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c @@ -15643,7 +15643,7 @@ static int bnxt_queue_start(struct net_device *dev, void *qmem, int idx) cpr = &rxr->bnapi->cp_ring; cpr->sw_stats->rx.rx_resets++; - for (i = 0; i <= BNXT_VNIC_NTUPLE; i++) { + for (i = 0; i <= bp->nr_vnics; i++) { vnic = &bp->vnic_info[i]; rc = bnxt_hwrm_vnic_set_rss_p5(bp, vnic, true); @@ -15671,7 +15671,7 @@ static int bnxt_queue_stop(struct net_device *dev, void *qmem, int idx) struct bnxt_vnic_info *vnic; int i; - for (i = 0; i <= BNXT_VNIC_NTUPLE; i++) { + for (i = 0; i <= bp->nr_vnics; i++) { vnic = &bp->vnic_info[i]; vnic->mru = 0; bnxt_hwrm_vnic_update(bp, vnic, From patchwork Sun Mar 9 13:42:15 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Taehee Yoo X-Patchwork-Id: 14008472 Received: from mail-pl1-f177.google.com (mail-pl1-f177.google.com [209.85.214.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 04B408BE7; Sun, 9 Mar 2025 13:43:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.177 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741527820; cv=none; b=QBWS8+FiRBhBuinu7dk241CmScwhqrkFF1tMIjokhkxh/m0e2eUE/jKflNOhHopskLSFS00e4hbOLZMOSuWx9iP9Hx6z+SNA0FOobNro7Ijg92BK2p0gtjxgHUcdcQEgWm2Fxlno8HgL6LAvfOKP2zNbAyL++tkdTJySao/Lw0U= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741527820; c=relaxed/simple; bh=HHfGcuNfeh82DaSgGhwUkGB2Fa2krOjRb0WcWENzAws=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=Gwcx2EXnmRPqEtVBu92MABVs3LEtilB1SRPERh6e+kiwEElWSxoNWr6AEBt5+7kQJKjMBmX8r8f9CcjgRW2nhKWPHAM9pkGMhFrEsZQRRPR3IrzNebn7QqzInyA4w7EvoWjQyJKPhOUsjwcxJYwlEl1G/DcAnjA+r8L3UCgCKtc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=GSsNE4zL; arc=none smtp.client-ip=209.85.214.177 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="GSsNE4zL" Received: by mail-pl1-f177.google.com with SMTP id d9443c01a7336-22423adf751so45123405ad.2; Sun, 09 Mar 2025 06:43:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741527818; x=1742132618; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=WpGCFg056YTTUeBKmVNip9/4yVXTyllNRkgbKXRAVZU=; b=GSsNE4zLSbi8OloGzLaJxMOxiAziVQcT5yOVdqM01iY4ULLuGoq6GsekQTA8MPhrNf fyDxIB7u09Da0OHfHklKizrq5D187rWvaSNbvSp7OD7BbQ636w/jP5Qp3hioaxKJjH2M 6/uHdoc1Lj9qDJvBlIrKSrMaI6pP0Nz2u7IC9k6o4yJ8WSllCfO0wcM/X5jJpkkPOLzE jtu+/q1sRb8k7QJUPjoRRk//UqhTbDj/1cTBL2lik6oeKxYkGfqIdTFPsA/PAkeNnQf2 SaRUZY00TsQBxR4uAQPrzYzEa2vDq/DdYTAletqbVFw1P78jKvqh/m2a8q4yEpbJHcFD aMow== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741527818; x=1742132618; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=WpGCFg056YTTUeBKmVNip9/4yVXTyllNRkgbKXRAVZU=; b=F2uqLBRb1bWk4ODVGDie4Swi+yPBBiRMPeBspxls4jyOW6Hlo52DGe/HERj86rSyUX eK9y/Wzl7J63uMqi7E7q0Yj5TZyqjd539pOOzMnyb35Hh91XKEt4B6ACY2WGQOQ6al8b YLxd8FgFKtV0XwbXgfFDohWT8aNue+HoF8xnwxb2VzowSfJzbeyUgZ6oB1ek2jLqOS/l MUomR0S9biN+6z2bP1zshKq07hsGteINGfrMHdDZHArmkrL9L8haciJeRVPK4qsyyIoK CUfI5C6R9o1vSWH0X28cmTkbwtg1T2aye2EIm2XIvlqWcg1z+eEd5kN4QjSaLyAP4glG WA8A== X-Forwarded-Encrypted: i=1; AJvYcCU3ZzBeszW/+xJbvHWZIooG9XR7hNbH6rtGhQFGRL3Ie48aRX/nI8ESJYLoKyPqvoJYMZt8/VfL4FyGUsjZaAo=@vger.kernel.org, AJvYcCV/eW/7nigaK5avdDADfbCBj71EhO0BD3NE4aVYmJF7mJ7flwD8s0O+01MHTYhEzGB/zm4SXaxc@vger.kernel.org X-Gm-Message-State: AOJu0YwYqUIsKpzDP0OkUqzvPkJI0HWFRBt9eDbeyef7yq9cf+Nj4e84 RLZQShv6zwtFoEmF4tdb6m69nE+aICgkDO4NlCWIAaOFyI58eC0U X-Gm-Gg: ASbGncvc7YAIJ+5v+poNEhywcQ+4tIH5KVihk9MHta2lpBsFidLwUHtRRyQI4y4ZpO/ cglDot9FU5EtQeXcCu2bXPmhKmt6fNhTqF5umE320wG83EVyHxIbzpJQyLTocGNBM1BM552Qkxl XUL5wtpR2GUOvpI+DJGywX2g5E5X4ZAfY+kWeRbyiRhYDr3eqmdU9v+VOpqx8Fi7V7Fve3bfAXW LA3EEVoueAdXYb481ISxzYzKJIRE2Zrxnsvpjjr5YJ+R1UZVZvZ+GMurW9LR3wSY+TJJHYTmyPS MKM21aqj9XHlnVCcJT4F80/Ze9YmahrkDQ== X-Google-Smtp-Source: AGHT+IG3/NdAI5DYHYau8C9yaSQiH7uNB+fO6np3wZ1kmqgKQWDDK1Yi8/Ov4LIGaxROGSNb7hTgbg== X-Received: by 2002:a05:6a00:2351:b0:736:65c9:9187 with SMTP id d2e1a72fcca58-736aa9db600mr13699394b3a.9.1741527818256; Sun, 09 Mar 2025 06:43:38 -0700 (PDT) Received: from ap.. ([182.213.254.91]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-736c41dda7csm2296841b3a.85.2025.03.09.06.43.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Mar 2025 06:43:37 -0700 (PDT) From: Taehee Yoo To: davem@davemloft.net, kuba@kernel.org, pabeni@redhat.com, edumazet@google.com, andrew+netdev@lunn.ch, michael.chan@broadcom.com, pavan.chebbi@broadcom.com, horms@kernel.org, shuah@kernel.org, netdev@vger.kernel.org, linux-kselftest@vger.kernel.org Cc: almasrymina@google.com, asml.silence@gmail.com, willemb@google.com, kaiyuanz@google.com, skhawaja@google.com, sdf@fomichev.me, gospo@broadcom.com, somnath.kotur@broadcom.com, dw@davidwei.uk, amritha.nambiar@intel.com, xuanzhuo@linux.alibaba.com, ap420073@gmail.com Subject: [PATCH v3 net 4/8] eth: bnxt: do not update checksum in bnxt_xdp_build_skb() Date: Sun, 9 Mar 2025 13:42:15 +0000 Message-Id: <20250309134219.91670-5-ap420073@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250309134219.91670-1-ap420073@gmail.com> References: <20250309134219.91670-1-ap420073@gmail.com> Precedence: bulk X-Mailing-List: linux-kselftest@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 The bnxt_rx_pkt() updates ip_summed value at the end if checksum offload is enabled. When the XDP-MB program is attached and it returns XDP_PASS, the bnxt_xdp_build_skb() is called to update skb_shared_info. The main purpose of bnxt_xdp_build_skb() is to update skb_shared_info, but it updates ip_summed value too if checksum offload is enabled. This is actually duplicate work. When the bnxt_rx_pkt() updates ip_summed value, it checks if ip_summed is CHECKSUM_NONE or not. It means that ip_summed should be CHECKSUM_NONE at this moment. But ip_summed may already be updated to CHECKSUM_UNNECESSARY in the XDP-MB-PASS path. So the by skb_checksum_none_assert() WARNS about it. This is duplicate work and updating ip_summed in the bnxt_xdp_build_skb() is not needed. Splat looks like: WARNING: CPU: 3 PID: 5782 at ./include/linux/skbuff.h:5155 bnxt_rx_pkt+0x479b/0x7610 [bnxt_en] Modules linked in: bnxt_re bnxt_en rdma_ucm rdma_cm iw_cm ib_cm ib_uverbs veth xt_nat xt_tcpudp xt_conntrack nft_chain_nat xt_MASQUERADE nf_] CPU: 3 UID: 0 PID: 5782 Comm: socat Tainted: G W 6.14.0-rc4+ #27 Tainted: [W]=WARN Hardware name: ASUS System Product Name/PRIME Z690-P D4, BIOS 0603 11/01/2021 RIP: 0010:bnxt_rx_pkt+0x479b/0x7610 [bnxt_en] Code: 54 24 0c 4c 89 f1 4c 89 ff c1 ea 1f ff d3 0f 1f 00 49 89 c6 48 85 c0 0f 84 4c e5 ff ff 48 89 c7 e8 ca 3d a0 c8 e9 8f f4 ff ff <0f> 0b f RSP: 0018:ffff88881ba09928 EFLAGS: 00010202 RAX: 0000000000000000 RBX: 00000000c7590303 RCX: 0000000000000000 RDX: 1ffff1104e7d1610 RSI: 0000000000000001 RDI: ffff8881c91300b8 RBP: ffff88881ba09b28 R08: ffff888273e8b0d0 R09: ffff888273e8b070 R10: ffff888273e8b010 R11: ffff888278b0f000 R12: ffff888273e8b080 R13: ffff8881c9130e00 R14: ffff8881505d3800 R15: ffff888273e8b000 FS: 00007f5a2e7be080(0000) GS:ffff88881ba00000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: 00007fff2e708ff8 CR3: 000000013e3b0000 CR4: 00000000007506f0 PKRU: 55555554 Call Trace: ? __warn+0xcd/0x2f0 ? bnxt_rx_pkt+0x479b/0x7610 ? report_bug+0x326/0x3c0 ? handle_bug+0x53/0xa0 ? exc_invalid_op+0x14/0x50 ? asm_exc_invalid_op+0x16/0x20 ? bnxt_rx_pkt+0x479b/0x7610 ? bnxt_rx_pkt+0x3e41/0x7610 ? __pfx_bnxt_rx_pkt+0x10/0x10 ? napi_complete_done+0x2cf/0x7d0 __bnxt_poll_work+0x4e8/0x1220 ? __pfx___bnxt_poll_work+0x10/0x10 ? __pfx_mark_lock.part.0+0x10/0x10 bnxt_poll_p5+0x36a/0xfa0 ? __pfx_bnxt_poll_p5+0x10/0x10 __napi_poll.constprop.0+0xa0/0x440 net_rx_action+0x899/0xd00 ... Following ping.py patch adds xdp-mb-pass case. so ping.py is going to be able to reproduce this issue. Fixes: 1dc4c557bfed ("bnxt: adding bnxt_xdp_build_skb to build skb from multibuffer xdp_buff") Signed-off-by: Taehee Yoo Reviewed-by: Somnath Kotur --- v3: - No changes. v2: - Patch added. drivers/net/ethernet/broadcom/bnxt/bnxt.c | 3 ++- drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c | 11 ++--------- drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.h | 3 +-- 3 files changed, 5 insertions(+), 12 deletions(-) diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c index 218109ee1c23..9afb2c5072b1 100644 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c @@ -2218,7 +2218,8 @@ static int bnxt_rx_pkt(struct bnxt *bp, struct bnxt_cp_ring_info *cpr, if (!skb) goto oom_next_rx; } else { - skb = bnxt_xdp_build_skb(bp, skb, agg_bufs, rxr->page_pool, &xdp, rxcmp1); + skb = bnxt_xdp_build_skb(bp, skb, agg_bufs, + rxr->page_pool, &xdp); if (!skb) { /* we should be able to free the old skb here */ bnxt_xdp_buff_frags_free(rxr, &xdp); diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c b/drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c index e9b49cb5b735..299822cacca4 100644 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c @@ -460,20 +460,13 @@ int bnxt_xdp(struct net_device *dev, struct netdev_bpf *xdp) struct sk_buff * bnxt_xdp_build_skb(struct bnxt *bp, struct sk_buff *skb, u8 num_frags, - struct page_pool *pool, struct xdp_buff *xdp, - struct rx_cmp_ext *rxcmp1) + struct page_pool *pool, struct xdp_buff *xdp) { struct skb_shared_info *sinfo = xdp_get_shared_info_from_buff(xdp); if (!skb) return NULL; - skb_checksum_none_assert(skb); - if (RX_CMP_L4_CS_OK(rxcmp1)) { - if (bp->dev->features & NETIF_F_RXCSUM) { - skb->ip_summed = CHECKSUM_UNNECESSARY; - skb->csum_level = RX_CMP_ENCAP(rxcmp1); - } - } + xdp_update_skb_shared_info(skb, num_frags, sinfo->xdp_frags_size, BNXT_RX_PAGE_SIZE * num_frags, diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.h b/drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.h index 0122782400b8..220285e190fc 100644 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.h +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.h @@ -33,6 +33,5 @@ void bnxt_xdp_buff_frags_free(struct bnxt_rx_ring_info *rxr, struct xdp_buff *xdp); struct sk_buff *bnxt_xdp_build_skb(struct bnxt *bp, struct sk_buff *skb, u8 num_frags, struct page_pool *pool, - struct xdp_buff *xdp, - struct rx_cmp_ext *rxcmp1); + struct xdp_buff *xdp); #endif From patchwork Sun Mar 9 13:42:16 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Taehee Yoo X-Patchwork-Id: 14008473 Received: from mail-pl1-f169.google.com (mail-pl1-f169.google.com [209.85.214.169]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 44FC61DB365; Sun, 9 Mar 2025 13:43:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.169 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741527826; cv=none; b=Ny8oxQfjIWklafmmM286Y4Z/J+XDeG7KB5aTu7WFre2W8NSLUJA+pCVdfzvOrpsL0Vwhb011N5GAL3cPQLyDCZcxjWzv8TZ1pvjD4ySM3MdrNkW19sWOZVpQcYdMkfLVX+H5A0bOd5A32+blBJTUGiW94YfPDuo04d+sKmFWwk0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741527826; c=relaxed/simple; bh=SPYXJYaDcfE/gDH/liXDdOSm+iSFNtvfwFEf1d1WtcU=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=frHccE1Hjopf2x0fdObzjhOca1EBC0uR//xuQ/K8UKwL7N28abv6DPjLiRTd6rYGvu/RzGJkBJaCbMLcsmkTQfL0yMQMnDZXLYpnnXXYF+Yf2hJalekXSS5Q/BjzopAB01l62+EubXrMI0cIqG6W7jkYS1Jo+dtzkgTCrreurKM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=G/Y6BDCd; arc=none smtp.client-ip=209.85.214.169 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="G/Y6BDCd" Received: by mail-pl1-f169.google.com with SMTP id d9443c01a7336-2239c066347so56565305ad.2; Sun, 09 Mar 2025 06:43:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741527824; x=1742132624; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=EZmnphCh5t5ZmRNjQ/jjVilH899pEZQFMcfX0b+XOCk=; b=G/Y6BDCd2bXUq3hNC35sXJrCwMQqA3ErZlmbo2z922v9xKCFb5XgwZmUW3c/7r40dK 2GpDKTBAGHVP9AMu5mohin55X7X2eUOMxrVnABPzVZXIyYgkvIxASR5mwd8L2ehKGusg TjFRW6t2V0v+NuHVBIhBhj5hfyd78/wHkLgVwfGU5gkIoCXetCURyMOR5wd0KZBXPozG 9vqC1cd13yk7J7aMXOeUjf9WnLDvpJOOF/ncmoHWI5TcF37kfgxg6S5oQ5MwY0zwIVKh qZbM+anFEqSeVVNnzlb1fc5iFJpe9tjJmZyR8gQMGT6ik642O4yYZ85lwaJlG2943b7d XmCg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741527824; x=1742132624; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=EZmnphCh5t5ZmRNjQ/jjVilH899pEZQFMcfX0b+XOCk=; b=fKvlr9MhCi4fdlNtuzC+jM+gEdy9GJ1/Tl81ANIkcGCkpvzzF85rtPPFyAyR1spA0V SaOArhdVd7vHwAAFuTTmTav2gC1hXnvRCavcwvurusxri1XM/uF5usX06ZbbYw6h/4Ia sj7wJRFQrG5PwO/9UYeDNgskoNCElZZYIXHT8cUbtezN2+SbrxXFF0dn6bG0efKYL2u9 W8NAc7BrPeKSSFaekUMSeLw9jqFGM8tbyTyBKawloCmcY2SsgfzrgYTtY5s8QWWiE91+ fuuxFwbxH8bzspv0JpLuo5LwOJjKUiqwZstpr0935uXNPVYxbybVZHand9+e1en5Zc12 1gBw== X-Forwarded-Encrypted: i=1; AJvYcCV9yXb+cbuuvmqx6uK2THN0JW+bNP1giLUGagmdtvn7dGMeGIyRn7FyBIMOgurcveabnLL7Qj4G@vger.kernel.org, AJvYcCWRUWULjTmvNIV2/BE0SUxvlICk+wvNHRDfr9Q64Ql+DSqnhJj1FDo2FNTHYMn6c5s4Xknwr6DrJhbKeOhJ/L4=@vger.kernel.org X-Gm-Message-State: AOJu0Yw8czWG4LZSNyb1qUWJ9c5TNyFOASprVvwDbXze7XHKwc/GiE/9 l5iOVEcHM1lk7tomf9v7Rsc0xi9jQ9mEBOrPw2fIwcxjOoGI6QNr0bC/7Q== X-Gm-Gg: ASbGncuwD4LVGgSxkPeA2aae0I+0CT8k31MMnb1IAAlTG6efhunidIsgBiweCyYRmLx yP+rsQVeR5V4F8JHCmjMj6OrX0Qi6fDTJ+HiGF/p3FFv0e8hWc4hF4sD4jxC2kV9yQaeXuM9fwt uiV8xHqTO1L2WSTx1U5W+VUrZuZDUwR7QWmfU7t5afIJfGNDK1mzIzpD2w6rCD7js9jMkKJqXKP mg/S+mvZ2uIxy1sjt1rcxenM2ebu2xn7D6s9yq8x5oaE4dCsfrx9pFm8/ETpM0FpnEX4/H6ckW9 Ek9LWjvIC5V9BSUlpAFqXzwoWX13vqNEjA== X-Google-Smtp-Source: AGHT+IHyM5RQmi/EN5Fxa1FlYPGzoqpy0+4i5nNLxytR2bQRBq5YHh5VtnGGzO5WGp8wpAY0nKlTsw== X-Received: by 2002:a05:6a00:218f:b0:736:62a8:e52d with SMTP id d2e1a72fcca58-736aaa1b77bmr13841332b3a.12.1741527824566; Sun, 09 Mar 2025 06:43:44 -0700 (PDT) Received: from ap.. ([182.213.254.91]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-736c41dda7csm2296841b3a.85.2025.03.09.06.43.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Mar 2025 06:43:43 -0700 (PDT) From: Taehee Yoo To: davem@davemloft.net, kuba@kernel.org, pabeni@redhat.com, edumazet@google.com, andrew+netdev@lunn.ch, michael.chan@broadcom.com, pavan.chebbi@broadcom.com, horms@kernel.org, shuah@kernel.org, netdev@vger.kernel.org, linux-kselftest@vger.kernel.org Cc: almasrymina@google.com, asml.silence@gmail.com, willemb@google.com, kaiyuanz@google.com, skhawaja@google.com, sdf@fomichev.me, gospo@broadcom.com, somnath.kotur@broadcom.com, dw@davidwei.uk, amritha.nambiar@intel.com, xuanzhuo@linux.alibaba.com, ap420073@gmail.com Subject: [PATCH v3 net 5/8] eth: bnxt: fix kernel panic in the bnxt_get_queue_stats{rx | tx} Date: Sun, 9 Mar 2025 13:42:16 +0000 Message-Id: <20250309134219.91670-6-ap420073@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250309134219.91670-1-ap420073@gmail.com> References: <20250309134219.91670-1-ap420073@gmail.com> Precedence: bulk X-Mailing-List: linux-kselftest@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 When qstats-get operation is executed, callbacks of netdev_stats_ops are called. The bnxt_get_queue_stats{rx | tx} collect per-queue stats from sw_stats in the rings. But {rx | tx | cp}_ring are allocated when the interface is up. So, these rings are not allocated when the interface is down. The qstats-get is allowed even if the interface is down. However, the bnxt_get_queue_stats{rx | tx}() accesses cp_ring and tx_ring without null check. So, it needs to avoid accessing rings if the interface is down. Reproducer: ip link set $interface down ./cli.py --spec netdev.yaml --dump qstats-get OR ip link set $interface down python ./stats.py Splat looks like: BUG: kernel NULL pointer dereference, address: 0000000000000000 #PF: supervisor read access in kernel mode #PF: error_code(0x0000) - not-present page PGD 1680fa067 P4D 1680fa067 PUD 16be3b067 PMD 0 Oops: Oops: 0000 [#1] PREEMPT SMP NOPTI CPU: 0 UID: 0 PID: 1495 Comm: python3 Not tainted 6.14.0-rc4+ #32 5cd0f999d5a15c574ac72b3e4b907341 Hardware name: ASUS System Product Name/PRIME Z690-P D4, BIOS 0603 11/01/2021 RIP: 0010:bnxt_get_queue_stats_rx+0xf/0x70 [bnxt_en] Code: c6 87 b5 18 00 00 02 eb a2 66 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 0f 1f 44 01 RSP: 0018:ffffabef43cdb7e0 EFLAGS: 00010282 RAX: 0000000000000000 RBX: ffffffffc04c8710 RCX: 0000000000000000 RDX: ffffabef43cdb858 RSI: 0000000000000000 RDI: ffff8d504e850000 RBP: ffff8d506c9f9c00 R08: 0000000000000004 R09: ffff8d506bcd901c R10: 0000000000000015 R11: ffff8d506bcd9000 R12: 0000000000000000 R13: ffffabef43cdb8c0 R14: ffff8d504e850000 R15: 0000000000000000 FS: 00007f2c5462b080(0000) GS:ffff8d575f600000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: 0000000000000000 CR3: 0000000167fd0000 CR4: 00000000007506f0 PKRU: 55555554 Call Trace: ? __die+0x20/0x70 ? page_fault_oops+0x15a/0x460 ? sched_balance_find_src_group+0x58d/0xd10 ? exc_page_fault+0x6e/0x180 ? asm_exc_page_fault+0x22/0x30 ? bnxt_get_queue_stats_rx+0xf/0x70 [bnxt_en cdd546fd48563c280cfd30e9647efa420db07bf1] netdev_nl_stats_by_netdev+0x2b1/0x4e0 ? xas_load+0x9/0xb0 ? xas_find+0x183/0x1d0 ? xa_find+0x8b/0xe0 netdev_nl_qstats_get_dumpit+0xbf/0x1e0 genl_dumpit+0x31/0x90 netlink_dump+0x1a8/0x360 Fixes: af7b3b4adda5 ("eth: bnxt: support per-queue statistics") Signed-off-by: Taehee Yoo Reviewed-by: Somnath Kotur --- v3: - Patch added. drivers/net/ethernet/broadcom/bnxt/bnxt.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c index 9afb2c5072b1..bee12d9b57ab 100644 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c @@ -15384,6 +15384,9 @@ static void bnxt_get_queue_stats_rx(struct net_device *dev, int i, struct bnxt_cp_ring_info *cpr; u64 *sw; + if (!bp->bnapi) + return; + cpr = &bp->bnapi[i]->cp_ring; sw = cpr->stats.sw_stats; @@ -15407,6 +15410,9 @@ static void bnxt_get_queue_stats_tx(struct net_device *dev, int i, struct bnxt_napi *bnapi; u64 *sw; + if (!bp->tx_ring) + return; + bnapi = bp->tx_ring[bp->tx_ring_map[i]].bnapi; sw = bnapi->cp_ring.stats.sw_stats; From patchwork Sun Mar 9 13:42:17 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Taehee Yoo X-Patchwork-Id: 14008474 Received: from mail-pl1-f177.google.com (mail-pl1-f177.google.com [209.85.214.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C122F15E5DC; Sun, 9 Mar 2025 13:43:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.177 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741527834; cv=none; b=q6RF5vx/IviSJARJwxkr3I4rSihEmEPO77LziViQZaZtBGhFxzr6LA5BJ2RtkLWDnflbBBhpvkTMbuNTG6hmZqsnLFaNYdCEnVGgYdxspT3DRzPNLMjGLRf/4KtIcyw8UeBEDCYLo58/G9l7OLkjIV6S6rHrFxALTCxWqGxIJC8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741527834; c=relaxed/simple; bh=lQ5S/kN0Y9lAPBWG/yhiZ9p9p0eQ1F0mtQlFxflp1OU=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=dJR5G2AgbHJWAaU3URsVIHy/YRkVq3IaU35O6PFdpwTzHHr6J9vtwDpYb95+9ANHPsijr6rEIUCA9uE4aSJ4yEiLaJ9xg6rp0UxnWW76RCYhJ04do/vBkaMWiz4lWEFeMAUJtbaFEEuJjFQ1QA3osIC3RIMDUfNk0gjVj6897Sw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=XlCOSR9q; arc=none smtp.client-ip=209.85.214.177 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="XlCOSR9q" Received: by mail-pl1-f177.google.com with SMTP id d9443c01a7336-224341bbc1dso29251835ad.3; Sun, 09 Mar 2025 06:43:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741527832; x=1742132632; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=qU2SZskl0GXhd/8iJGI8QszFt2TGbZrtsEMkr1I4oGI=; b=XlCOSR9qDB9FjXRQp3Mh1nqc+qJ5iRrfn0RQ6DQlQTtjBvl7b/2oKa/0yVoQOTYHyB bzDNv9dg/hyx1N0WivWW0d9MDoqDGAAqvsDnXcpIkr98oW0f5UchhrCI6poQ7h+A+ama O7pB9wLPjjM+mcVAq2J/rg+z7RB1M8WRd6FgUELRU7/pIDiKf2LvCQG7NvBGnr3sKyy7 p16hlfVm4OwSe8bGAngyl8ReU9lG5MWEf/Nh6XpaYed1aiYn+RNBpgTYaZieKCe+hT+Y 0cH9Uo9iStntU//HE+OwtJtmbAMyzgpTHJ0uiQ/hYvFv5WC37DdiM/X/tl72dfaiyL73 Xc0Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741527832; x=1742132632; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=qU2SZskl0GXhd/8iJGI8QszFt2TGbZrtsEMkr1I4oGI=; b=wByEmme6kdphdGua/bagqx/+W9/EiuVbb+JvyEjvfn9gQm6/USGJtp+sFo9w5rFFf+ ecJ6e88c/UOX8d5SAeg8fWsWfZGZbaI5XGDrfNycpPX5R4lybJgLD43RpK5p4UCQ/OvZ dGCLLEuZsADDEndvfXx1W80R60TUEQZcOtn/cuX3PdZdDXuZlJN9xjWcbE0AfFAVHfEh HArQvCWntPmvVkI4dR3bHSCdYsycivd1YFWmRyrPe7NK9PiEJlqh9k5aA+PyFeQ4Rx0f tYOcaPKjqesfUwB5oXqCOIquZbdoT/ThJ1g8+EEwWC17HESyxuH/jzGs05Qep6k2lMWl h8Fg== X-Forwarded-Encrypted: i=1; AJvYcCUlwZ/6gHaNmuHs/cMy0gXyxBEwq0UHPjMsCKs/BOE6KlmAgur7/GLBUW+9ioWTiAdezE9dW+FQ@vger.kernel.org, AJvYcCWHoTupo04Gm4KwdvrZRCljGkt0/F4vM0MJpyRDoiBrHCoCIFggz8wveWedMw+0KBrCj0rBXv6aR5lob7Dyq3U=@vger.kernel.org X-Gm-Message-State: AOJu0YzwPnhq5b2hUNhAJmOOfssqp6LyOec65xvyn+n58/ed3A5afhvg i7JYkTHgxHc3mwT/6VBiUr289cTEvKRc8vojj0wma/DPm7km0QMX X-Gm-Gg: ASbGncvWSUGttwRe9ARdmupfNSKbOghG9GS1xlKQ8YFw0K0cPaGNZhjedOoNdZFbAmj fAUoM9EDFps2bYuQ5wOa4Ddk/EZDZyJgvwV4a/comWYHtbO8s2zkpL7jzY7no7toUKOox35zN1O z5sGgpok4K/LIujTvRt/Jg20FbtuAzizO/Y/R6//BJbiWHWG4d2jZbi6nzBFDjSiuTC+Evyi46z QiHAfDf0xqPHxbfcxPhPpAyOld4ppBJVgGBbN3yRLNvk8ud84FPbBQVLYCvPCRiBiMsAZ4kvFaP V3qmcQ+FQO/GNtQoy4/cEky7Ss5YzVRlkw== X-Google-Smtp-Source: AGHT+IGnOC2yuJ6Fl659YA5Q65aYXCdzj2lJFnXehH21t3WzXdK8aw4qcSC78ND3kWQG/kGoU+IUVA== X-Received: by 2002:a05:6a00:1703:b0:730:9801:d3e2 with SMTP id d2e1a72fcca58-736aa9df8afmr16125103b3a.8.1741527831922; Sun, 09 Mar 2025 06:43:51 -0700 (PDT) Received: from ap.. ([182.213.254.91]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-736c41dda7csm2296841b3a.85.2025.03.09.06.43.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Mar 2025 06:43:50 -0700 (PDT) From: Taehee Yoo To: davem@davemloft.net, kuba@kernel.org, pabeni@redhat.com, edumazet@google.com, andrew+netdev@lunn.ch, michael.chan@broadcom.com, pavan.chebbi@broadcom.com, horms@kernel.org, shuah@kernel.org, netdev@vger.kernel.org, linux-kselftest@vger.kernel.org Cc: almasrymina@google.com, asml.silence@gmail.com, willemb@google.com, kaiyuanz@google.com, skhawaja@google.com, sdf@fomichev.me, gospo@broadcom.com, somnath.kotur@broadcom.com, dw@davidwei.uk, amritha.nambiar@intel.com, xuanzhuo@linux.alibaba.com, ap420073@gmail.com Subject: [PATCH v3 net 6/8] eth: bnxt: fix memory leak in queue reset Date: Sun, 9 Mar 2025 13:42:17 +0000 Message-Id: <20250309134219.91670-7-ap420073@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250309134219.91670-1-ap420073@gmail.com> References: <20250309134219.91670-1-ap420073@gmail.com> Precedence: bulk X-Mailing-List: linux-kselftest@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 When the queue is reset, the bnxt_alloc_one_tpa_info() is called to allocate tpa_info for the new queue. And then the old queue's tpa_info should be removed by the bnxt_free_one_tpa_info(), but it is not called. So memory leak occurs. It adds the bnxt_free_one_tpa_info() in the bnxt_queue_mem_free(). unreferenced object 0xffff888293cc0000 (size 16384): comm "ncdevmem", pid 2076, jiffies 4296604081 hex dump (first 32 bytes): 00 00 00 00 00 00 00 00 40 75 78 93 82 88 ff ff ........@ux..... 40 75 78 93 02 00 00 00 00 00 00 00 00 00 00 00 @ux............. backtrace (crc 5d7d4798): ___kmalloc_large_node+0x10d/0x1b0 __kmalloc_large_node_noprof+0x17/0x60 __kmalloc_noprof+0x3f6/0x520 bnxt_alloc_one_tpa_info+0x5f/0x300 [bnxt_en] bnxt_queue_mem_alloc+0x8e8/0x14f0 [bnxt_en] netdev_rx_queue_restart+0x233/0x620 net_devmem_bind_dmabuf_to_queue+0x2a3/0x600 netdev_nl_bind_rx_doit+0xc00/0x10a0 genl_family_rcv_msg_doit+0x1d4/0x2b0 genl_rcv_msg+0x3fb/0x6c0 netlink_rcv_skb+0x12c/0x360 genl_rcv+0x24/0x40 netlink_unicast+0x447/0x710 netlink_sendmsg+0x712/0xbc0 __sys_sendto+0x3fd/0x4d0 __x64_sys_sendto+0xdc/0x1b0 Fixes: 2d694c27d32e ("bnxt_en: implement netdev_queue_mgmt_ops") Signed-off-by: Taehee Yoo --- v3: - Patch added. drivers/net/ethernet/broadcom/bnxt/bnxt.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c index bee12d9b57ab..55f553debd3b 100644 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c @@ -15539,6 +15539,7 @@ static void bnxt_queue_mem_free(struct net_device *dev, void *qmem) struct bnxt_ring_struct *ring; bnxt_free_one_rx_ring_skbs(bp, rxr); + bnxt_free_one_tpa_info(bp, rxr); xdp_rxq_info_unreg(&rxr->xdp_rxq); From patchwork Sun Mar 9 13:42:18 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Taehee Yoo X-Patchwork-Id: 14008475 Received: from mail-pl1-f172.google.com (mail-pl1-f172.google.com [209.85.214.172]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 062E91DD88D; Sun, 9 Mar 2025 13:43:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741527840; cv=none; b=ZKc5/CnMxsx+71QXE1Z8xbNIEpRQoveKA7mULaKrx9ZbqCVGF/DQeMb7Ryc6mMLQT5gGXMc8n7sczkM9i6HN2Cvua1/2T88rOH/gAGaEpYgwqoi5UKxey0ACLo12nyu44mBLmbSQGHqdUMhAh0bnASO0kTKTFYhN6KsC4JmmPJ0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741527840; c=relaxed/simple; bh=HKzvcqvzC2csHS53Vp55KWB/vIGKh0ZE6AdrIf+H6GQ=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=laz86YZ9cIqpg+DDkMC//Xr0L4dn/Mly1YKGPdPkfYe5iFjjJUq9dVmOFvTpkVBwc7W0JCY4rKAfQxPjCFYv/SrAjaVS2maxNIGndJ368Iw+j9NS7wxnWAUKJ0UWNZHeXFW9hXvoeGIk5StsB/EWLLVTKLrIK1EwJxdf6Wpmyuo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=Nyh6MnNf; arc=none smtp.client-ip=209.85.214.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="Nyh6MnNf" Received: by mail-pl1-f172.google.com with SMTP id d9443c01a7336-22548a28d0cso25503445ad.3; Sun, 09 Mar 2025 06:43:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741527838; x=1742132638; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=TyRlgTDa3EPD0DdiASnsACMSNPi+mDYbd0XgNytQebw=; b=Nyh6MnNftKKbh0AfBK7D7EAKgZdrjRWKQEG0ssz6elz82qPkDoiILomIgS60Y7hAMs bssO9KTs2hpP3Kw/Vw+dUBHRe3sZZ57Q982XRrwe8pIl/VYWvPDweIoq4zph6hj2Jn+n f9MIDZ1ujBOv0GZdKXrVnLKOXDoSAcaFoMbPBqmPmcCyTOhLcQmaR0Hueog00qyYfMCF yHzH7yreil3g6bCM99jDtFlrdfwUlkBgQeT8P1DVM8AfjVfdiztmkpls7Qq872vI0Iqs XvuJPOFuP2oFGiWe4WzwwVehlhjmKxkJD61HK4WQPGHhhmQ5VMbWGOkmexZz4LD9GFRj 4/hA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741527838; x=1742132638; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=TyRlgTDa3EPD0DdiASnsACMSNPi+mDYbd0XgNytQebw=; b=BVSzpDFVAgridNbZkb/urEDE7h9bxYoB+Buo918B27v2y3mVxrHXTsFiDFZMXqqxOv I7gCs1ppKvP/LgvVzRKbrxtW+Y0Zh1nRclqPwbloci7C0CU3K1Qddhhr3wSRXnh0Aw8I GgsykOvnSScKqExYS9Xa1wnhfZiPMpQdmLnISxTjPczQoe7XsLaAdwzWWfAMAKDiD3aw Z2GqosIKSqIRJYKMYBNnwOigV2bf2PwBKJOelarCA8QPD2xQTnYSe8ld3woclk3BPS7A f3krUrEn92JxrObxfcJuHJQN4hdl8wARffJq7D5jmwLFF/0Vztc7W5d9EEa0dkHye75U 6lZw== X-Forwarded-Encrypted: i=1; AJvYcCVbND82tr0S4JwsbopmHMdouDHejIktNBXIRHHMvD8lvOd3E7RnKU+xYxI58tNPBs1ZfX5Y59HZ@vger.kernel.org, AJvYcCWQUhVYM22T5TUv6UjeTAnZs4bVmVuOquxRw20wO2NBayFuzXXtPoFKcT99x5k7Z+lkF9VBwe2LgaDfhOxWhx0=@vger.kernel.org X-Gm-Message-State: AOJu0YwPxMP2hroSCciWNBvTiwE7jm+Y4PHltGmVr1OK9V0D7Urx/dEy datlx3nV4BMX0vSZWac0Cjb7qfgwNBjSeFLgYeyHkBoUzC+ruFzT X-Gm-Gg: ASbGncv+Ar+Xv9K6bf/sTvwgZng4/ZxxA5lxZa7N8MPYEaLXOK6XuVbVPH0nmZQ9/4c BwXTqP8joyPyUXaEu443TSJv6534DIK6M8SJVEqaW+aTom1FM1YDHKIrdO/g300DjgxqXgOAOY8 yx23cke0tXrqXSMa06AJGGUApyOxQUCS73bC5U59QMl710WwA/2zNpelsh5DyYKEs9+au74dJ+/ qcA1yR+kN7ptkRM7Y6r7xwsi02D1Ye+ocGxBStDhnoXBYLRcqoj/KPYHtnwbvB7+IMPImvqh7Gt jlcwL2c66ASdZZg91+VnWHbp/Z7LXTd5ksu1K26Paqy8 X-Google-Smtp-Source: AGHT+IFBX9S/JsoN9xRiqia8Ykc6YLc2hDACAbWrYdEFdxC90ipZtywXiXgCY1La5SZokf27kF4K+g== X-Received: by 2002:a05:6a20:1584:b0:1ee:85b2:ef7c with SMTP id adf61e73a8af0-1f544c601f0mr17472191637.27.1741527838202; Sun, 09 Mar 2025 06:43:58 -0700 (PDT) Received: from ap.. ([182.213.254.91]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-736c41dda7csm2296841b3a.85.2025.03.09.06.43.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Mar 2025 06:43:57 -0700 (PDT) From: Taehee Yoo To: davem@davemloft.net, kuba@kernel.org, pabeni@redhat.com, edumazet@google.com, andrew+netdev@lunn.ch, michael.chan@broadcom.com, pavan.chebbi@broadcom.com, horms@kernel.org, shuah@kernel.org, netdev@vger.kernel.org, linux-kselftest@vger.kernel.org Cc: almasrymina@google.com, asml.silence@gmail.com, willemb@google.com, kaiyuanz@google.com, skhawaja@google.com, sdf@fomichev.me, gospo@broadcom.com, somnath.kotur@broadcom.com, dw@davidwei.uk, amritha.nambiar@intel.com, xuanzhuo@linux.alibaba.com, ap420073@gmail.com Subject: [PATCH v3 net 7/8] net: devmem: do not WARN conditionally after netdev_rx_queue_restart() Date: Sun, 9 Mar 2025 13:42:18 +0000 Message-Id: <20250309134219.91670-8-ap420073@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250309134219.91670-1-ap420073@gmail.com> References: <20250309134219.91670-1-ap420073@gmail.com> Precedence: bulk X-Mailing-List: linux-kselftest@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 When devmem socket is closed, netdev_rx_queue_restart() is called to reset queue by the net_devmem_unbind_dmabuf(). But callback may return -ENETDOWN if the interface is down because queues are already freed when the interface is down so queue reset is not needed. So, it should not warn if the return value is -ENETDOWN. Signed-off-by: Taehee Yoo Reviewed-by: Mina Almasry --- v3: - No changes. v2: - Patch added. net/core/devmem.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/net/core/devmem.c b/net/core/devmem.c index 3bba3f018df0..0e5a2c672efd 100644 --- a/net/core/devmem.c +++ b/net/core/devmem.c @@ -109,6 +109,7 @@ void net_devmem_unbind_dmabuf(struct net_devmem_dmabuf_binding *binding) struct netdev_rx_queue *rxq; unsigned long xa_idx; unsigned int rxq_idx; + int err; if (binding->list.next) list_del(&binding->list); @@ -120,7 +121,8 @@ void net_devmem_unbind_dmabuf(struct net_devmem_dmabuf_binding *binding) rxq_idx = get_netdev_rx_queue_index(rxq); - WARN_ON(netdev_rx_queue_restart(binding->dev, rxq_idx)); + err = netdev_rx_queue_restart(binding->dev, rxq_idx); + WARN_ON(err && err != -ENETDOWN); } xa_erase(&net_devmem_dmabuf_bindings, binding->id); From patchwork Sun Mar 9 13:42:19 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Taehee Yoo X-Patchwork-Id: 14008476 Received: from mail-pl1-f180.google.com (mail-pl1-f180.google.com [209.85.214.180]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 39C371DC996; Sun, 9 Mar 2025 13:44:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.180 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741527846; cv=none; b=pXrcExgVIsiBcLjklqHxq702p9u6E/3LaD1mP0qIb/oaiGyww0oCxmp5GVhBPvvnCaGXNGF+GXErO43pXYxVTGERTVm6Tiqi3TXaDyTfxT8DickePb4dxxIQF0YgVuh/NlJEOVeWIbcoF5l4i+2PRiZw7fPrUZNxUMjLUyin6Dk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741527846; c=relaxed/simple; bh=BetOEpXT4sktIbCCQ2L9DlSwPslXcVObeTItgL1p0Cg=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=EpGCGAWoEkSD5h5jd3JveRxZOV3NnpF6V6LnsVPD3hj5jlGwyU6Yut2UiffrcBxtAZxxNIsKuMjL/pYVZqbseWazsBG07R+Ax6/hbhzYfCQm+CzWcq2upYJM/jginTD30qBwTRtfKQz9FWeAA4xmL6pBpCe9t3LSSNSwDlqb5cI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=HL1DAG4t; arc=none smtp.client-ip=209.85.214.180 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="HL1DAG4t" Received: by mail-pl1-f180.google.com with SMTP id d9443c01a7336-223fd89d036so64924745ad.1; Sun, 09 Mar 2025 06:44:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741527844; x=1742132644; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=kaEFJP+ktkukRwLsnnvs6JN1FNl+ELjQ7TqtkoU4H70=; b=HL1DAG4t/DGcChm+AbOUM3lpERnKM2DWXNIrcqaMaBI2huOOPKCfFYqbrUo+2C7jgp uQ+JuhXpr33quo69QMSHk7C2UVgPLRF0SQYwcdECDh9y+QV1s2kzqJB5Nc81nPOwWslI /PhL9kwDIZfMQPgRCYUrlL+CazsOcxmcTKDyBSKTDUSK+Ri4m5BtySYR+NY4M5wxoWiS 6SuMwbCYuwOLE8xcZlFs7WrYT+zWwKiJS2VW8o30vxrD6uOnfsXwQUGbU5fdcM/13AJr HeaYzgUlAaNUCXHjqPM7Z0qRkftg9pbyw2W2Ta0IDEdpEFDqySf7pR7wJLIzS/eXZwYD sftA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741527844; x=1742132644; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=kaEFJP+ktkukRwLsnnvs6JN1FNl+ELjQ7TqtkoU4H70=; b=Nua7FkbKVrKYtJ+LlKUScKw7cGpTp16W5pH7OX3puJOseiKFNruK3hGV7sETYSJWbZ xmdEdRnR1Py4L8SD1/XDZffyGspQ5yynW4TF49Pzi8AUjbs6ZGG3qPLdy7Ggc4J2UNvt yfmqxktXctMCPTCWINtm5iMYcsM8wdpq3SlmU9xwnCA43lv7EKp3djV9UH2z3SrZX6kx Bbtyv2a7A6rPl/zP03O9rY6e5FLUwpvGv7DGb3ycQUVEdWRNTOwePa1wrsyUtuHRwKuz LTgpXifH2W2y/es+0EICnMIppYnC6vMtmZb9yjrRsVlDnkyITC6cn8weXJi02BqsChHR CmYw== X-Forwarded-Encrypted: i=1; AJvYcCU5MI0CxgD9SOE2ElDNuelMT0tiM3gTnr/ipfiF07Hj7ksYeSIywl+C/8+RgizAlCo+2FtA56Vi9/jY9/HQeYs=@vger.kernel.org, AJvYcCW+L7bU8sC1ZHuOSW3G065RKlHMnSeFhnppAGQ6XkDsQbX7X68RM5r9nWmzlQtmKX2hWxCSvWYB@vger.kernel.org X-Gm-Message-State: AOJu0Yx5doYSaPkYDgvBxrJiG3wwdtFEk8X27iOkjSw4tu599eA+tcvO +SrJxhSVYZHpQdf5pa5EIaSxDbmjsZlZqzQjLSIHdU3Et9G55H4/ X-Gm-Gg: ASbGncvMNOLmCQ3oRodWTTyw+/1UicU0mePStfHKOol9qkLnlDNVw5JfM6SLmQLhnKa mHh+8Jlwt4x9WW7ha5unXE8wHyB7CcL0ejbkkU8aUBcfQfq+ex6KCNXq757NwMqi75FIzDEemTi fAGIhfRKibyFKQ7B6pxEqtZ1JEyLMp5Y55212xFy0wfHKGpN1oREAOVg4Lv2nL89DNYpRQG6pOY moOFkpgig3s+RW7pKTknRpDKZNGyLM19lr1agwZvVOSKa+kc0BPSKK1Nlh+it4DO1qdl9oKRhQX 97e+Iubke8RH9EmHmS4C3hbqnLhnE6Aei+TKo6WdelK5 X-Google-Smtp-Source: AGHT+IEfsQvvzA74mKDNozulYmWb1+2TYl1v5p+CMdDWwcrEObDxrU4laIZqnodgLp8lJ8NkNWBp9A== X-Received: by 2002:a05:6a21:497:b0:1f1:2a5:1667 with SMTP id adf61e73a8af0-1f544c381e0mr21309623637.32.1741527844524; Sun, 09 Mar 2025 06:44:04 -0700 (PDT) Received: from ap.. ([182.213.254.91]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-736c41dda7csm2296841b3a.85.2025.03.09.06.43.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Mar 2025 06:44:03 -0700 (PDT) From: Taehee Yoo To: davem@davemloft.net, kuba@kernel.org, pabeni@redhat.com, edumazet@google.com, andrew+netdev@lunn.ch, michael.chan@broadcom.com, pavan.chebbi@broadcom.com, horms@kernel.org, shuah@kernel.org, netdev@vger.kernel.org, linux-kselftest@vger.kernel.org Cc: almasrymina@google.com, asml.silence@gmail.com, willemb@google.com, kaiyuanz@google.com, skhawaja@google.com, sdf@fomichev.me, gospo@broadcom.com, somnath.kotur@broadcom.com, dw@davidwei.uk, amritha.nambiar@intel.com, xuanzhuo@linux.alibaba.com, ap420073@gmail.com Subject: [PATCH v3 net 8/8] selftests: drv-net: add xdp cases for ping.py Date: Sun, 9 Mar 2025 13:42:19 +0000 Message-Id: <20250309134219.91670-9-ap420073@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250309134219.91670-1-ap420073@gmail.com> References: <20250309134219.91670-1-ap420073@gmail.com> Precedence: bulk X-Mailing-List: linux-kselftest@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 ping.py has 3 cases, test_v4, test_v6 and test_tcp. But these cases are not executed on the XDP environment. So, it adds XDP environment, existing tests(test_v4, test_v6, and test_tcp) are executed too on the below XDP environment. So, it adds XDP cases. 1. xdp-generic + single-buffer 2. xdp-generic + multi-buffer 3. xdp-native + single-buffer 4. xdp-native + multi-buffer 5. xdp-offload It also makes test_{v4 | v6 | tcp} sending large size packets. this may help to check whether multi-buffer is working or not. Note that the physical interface may be down and then up when xdp is attached or detached. This takes some period to activate traffic. So sleep(10) is added if the test interface is the physical interface. netdevsim and veth type interfaces skip sleep. Signed-off-by: Taehee Yoo --- v3: - No changes. v2: - Patch added. tools/testing/selftests/drivers/net/ping.py | 200 ++++++++++++++++-- .../testing/selftests/net/lib/xdp_dummy.bpf.c | 6 + 2 files changed, 191 insertions(+), 15 deletions(-) diff --git a/tools/testing/selftests/drivers/net/ping.py b/tools/testing/selftests/drivers/net/ping.py index eb83e7b48797..93f4b411b378 100755 --- a/tools/testing/selftests/drivers/net/ping.py +++ b/tools/testing/selftests/drivers/net/ping.py @@ -1,49 +1,219 @@ #!/usr/bin/env python3 # SPDX-License-Identifier: GPL-2.0 +import os +import random, string, time from lib.py import ksft_run, ksft_exit -from lib.py import ksft_eq -from lib.py import NetDrvEpEnv +from lib.py import ksft_eq, KsftSkipEx, KsftFailEx +from lib.py import EthtoolFamily, NetDrvEpEnv from lib.py import bkg, cmd, wait_port_listen, rand_port +from lib.py import ethtool, ip +remote_ifname="" +no_sleep=False -def test_v4(cfg) -> None: +def _test_v4(cfg) -> None: cfg.require_v4() cmd(f"ping -c 1 -W0.5 {cfg.remote_v4}") cmd(f"ping -c 1 -W0.5 {cfg.v4}", host=cfg.remote) + cmd(f"ping -s 65000 -c 1 -W0.5 {cfg.remote_v4}") + cmd(f"ping -s 65000 -c 1 -W0.5 {cfg.v4}", host=cfg.remote) - -def test_v6(cfg) -> None: +def _test_v6(cfg) -> None: cfg.require_v6() - cmd(f"ping -c 1 -W0.5 {cfg.remote_v6}") - cmd(f"ping -c 1 -W0.5 {cfg.v6}", host=cfg.remote) - + cmd(f"ping -c 1 -W5 {cfg.remote_v6}") + cmd(f"ping -c 1 -W5 {cfg.v6}", host=cfg.remote) + cmd(f"ping -s 65000 -c 1 -W0.5 {cfg.remote_v6}") + cmd(f"ping -s 65000 -c 1 -W0.5 {cfg.v6}", host=cfg.remote) -def test_tcp(cfg) -> None: +def _test_tcp(cfg) -> None: cfg.require_cmd("socat", remote=True) port = rand_port() listen_cmd = f"socat -{cfg.addr_ipver} -t 2 -u TCP-LISTEN:{port},reuseport STDOUT" + test_string = ''.join(random.choice(string.ascii_lowercase) for _ in range(65536)) with bkg(listen_cmd, exit_wait=True) as nc: wait_port_listen(port) - cmd(f"echo ping | socat -t 2 -u STDIN TCP:{cfg.baddr}:{port}", + cmd(f"echo {test_string} | socat -t 2 -u STDIN TCP:{cfg.baddr}:{port}", shell=True, host=cfg.remote) - ksft_eq(nc.stdout.strip(), "ping") + ksft_eq(nc.stdout.strip(), test_string) + test_string = ''.join(random.choice(string.ascii_lowercase) for _ in range(65536)) with bkg(listen_cmd, host=cfg.remote, exit_wait=True) as nc: wait_port_listen(port, host=cfg.remote) - cmd(f"echo ping | socat -t 2 -u STDIN TCP:{cfg.remote_baddr}:{port}", shell=True) - ksft_eq(nc.stdout.strip(), "ping") - + cmd(f"echo {test_string} | socat -t 2 -u STDIN TCP:{cfg.remote_baddr}:{port}", shell=True) + ksft_eq(nc.stdout.strip(), test_string) + +def _set_offload_checksum(cfg, netnl, on) -> None: + try: + ethtool(f" -K {cfg.ifname} rx {on} tx {on} ") + except: + return + +def _set_xdp_generic_sb_on(cfg) -> None: + test_dir = os.path.dirname(os.path.realpath(__file__)) + prog = test_dir + "/../../net/lib/xdp_dummy.bpf.o" + cmd(f"ip link set dev {remote_ifname} mtu 1500", shell=True, host=cfg.remote) + cmd(f"ip link set dev {cfg.ifname} mtu 1500 xdpgeneric obj {prog} sec xdp", shell=True) + + if no_sleep != True: + time.sleep(10) + +def _set_xdp_generic_mb_on(cfg) -> None: + test_dir = os.path.dirname(os.path.realpath(__file__)) + prog = test_dir + "/../../net/lib/xdp_dummy.bpf.o" + cmd(f"ip link set dev {remote_ifname} mtu 9000", shell=True, host=cfg.remote) + ip("link set dev %s mtu 9000 xdpgeneric obj %s sec xdp.frags" % (cfg.ifname, prog)) + + if no_sleep != True: + time.sleep(10) + +def _set_xdp_native_sb_on(cfg) -> None: + test_dir = os.path.dirname(os.path.realpath(__file__)) + prog = test_dir + "/../../net/lib/xdp_dummy.bpf.o" + cmd(f"ip link set dev {remote_ifname} mtu 1500", shell=True, host=cfg.remote) + cmd(f"ip -j link set dev {cfg.ifname} mtu 1500 xdp obj {prog} sec xdp", shell=True) + xdp_info = ip("-d link show %s" % (cfg.ifname), json=True)[0] + if xdp_info['xdp']['mode'] != 1: + """ + If the interface doesn't support native-mode, it falls back to generic mode. + The mode value 1 is native and 2 is generic. + So it raises an exception if mode is not 1(native mode). + """ + raise KsftSkipEx('device does not support native-XDP') + + if no_sleep != True: + time.sleep(10) + +def _set_xdp_native_mb_on(cfg) -> None: + test_dir = os.path.dirname(os.path.realpath(__file__)) + prog = test_dir + "/../../net/lib/xdp_dummy.bpf.o" + cmd(f"ip link set dev {remote_ifname} mtu 9000", shell=True, host=cfg.remote) + try: + cmd(f"ip link set dev {cfg.ifname} mtu 9000 xdp obj {prog} sec xdp.frags", shell=True) + except Exception as e: + cmd(f"ip link set dev {remote_ifname} mtu 1500", shell=True, host=cfg.remote) + raise KsftSkipEx('device does not support native-multi-buffer XDP') + + if no_sleep != True: + time.sleep(10) + +def _set_xdp_offload_on(cfg) -> None: + test_dir = os.path.dirname(os.path.realpath(__file__)) + prog = test_dir + "/../../net/lib/xdp_dummy.bpf.o" + cmd(f"ip link set dev {cfg.ifname} mtu 1500", shell=True) + try: + cmd(f"ip link set dev {cfg.ifname} xdpoffload obj {prog} sec xdp", shell=True) + except Exception as e: + raise KsftSkipEx('device does not support offloaded XDP') + cmd(f"ip link set dev {remote_ifname} mtu 1500", shell=True, host=cfg.remote) + + if no_sleep != True: + time.sleep(10) + +def get_interface_info(cfg) -> None: + global remote_ifname + global no_sleep + + remote_info = cmd(f"ip -4 -o addr show to {cfg.remote_v4} | awk '{{print $2}}'", shell=True, host=cfg.remote).stdout + remote_ifname = remote_info.rstrip('\n') + if remote_ifname == "": + raise KsftFailEx('Can not get remote interface') + local_info = ip("-d link show %s" % (cfg.ifname), json=True)[0] + if 'parentbus' in local_info and local_info['parentbus'] == "netdevsim": + no_sleep=True + if 'linkinfo' in local_info and local_info['linkinfo']['info_kind'] == "veth": + no_sleep=True + +def set_interface_init(cfg) -> None: + cmd(f"ip link set dev {cfg.ifname} mtu 1500", shell=True) + cmd(f"ip link set dev {cfg.ifname} xdp off ", shell=True) + cmd(f"ip link set dev {cfg.ifname} xdpgeneric off ", shell=True) + cmd(f"ip link set dev {cfg.ifname} xdpoffload off", shell=True) + cmd(f"ip link set dev {remote_ifname} mtu 1500", shell=True, host=cfg.remote) + +def test_default(cfg, netnl) -> None: + _set_offload_checksum(cfg, netnl, "off") + _test_v4(cfg) + _test_v6(cfg) + _test_tcp(cfg) + _set_offload_checksum(cfg, netnl, "on") + _test_v4(cfg) + _test_v6(cfg) + _test_tcp(cfg) + +def test_xdp_generic_sb(cfg, netnl) -> None: + _set_xdp_generic_sb_on(cfg) + _set_offload_checksum(cfg, netnl, "off") + _test_v4(cfg) + _test_v6(cfg) + _test_tcp(cfg) + _set_offload_checksum(cfg, netnl, "on") + _test_v4(cfg) + _test_v6(cfg) + _test_tcp(cfg) + ip("link set dev %s xdpgeneric off" % cfg.ifname) + +def test_xdp_generic_mb(cfg, netnl) -> None: + _set_xdp_generic_mb_on(cfg) + _set_offload_checksum(cfg, netnl, "off") + _test_v4(cfg) + _test_v6(cfg) + _test_tcp(cfg) + _set_offload_checksum(cfg, netnl, "on") + _test_v4(cfg) + _test_v6(cfg) + _test_tcp(cfg) + ip("link set dev %s xdpgeneric off" % cfg.ifname) + +def test_xdp_native_sb(cfg, netnl) -> None: + _set_xdp_native_sb_on(cfg) + _set_offload_checksum(cfg, netnl, "off") + _test_v4(cfg) + _test_v6(cfg) + _test_tcp(cfg) + _set_offload_checksum(cfg, netnl, "on") + _test_v4(cfg) + _test_v6(cfg) + _test_tcp(cfg) + ip("link set dev %s xdp off" % cfg.ifname) + +def test_xdp_native_mb(cfg, netnl) -> None: + _set_xdp_native_mb_on(cfg) + _set_offload_checksum(cfg, netnl, "off") + _test_v4(cfg) + _test_v6(cfg) + _test_tcp(cfg) + _set_offload_checksum(cfg, netnl, "on") + _test_v4(cfg) + _test_v6(cfg) + _test_tcp(cfg) + ip("link set dev %s xdp off" % cfg.ifname) + +def test_xdp_offload(cfg, netnl) -> None: + _set_xdp_offload_on(cfg) + _test_v4(cfg) + _test_v6(cfg) + _test_tcp(cfg) + ip("link set dev %s xdpoffload off" % cfg.ifname) def main() -> None: with NetDrvEpEnv(__file__) as cfg: - ksft_run(globs=globals(), case_pfx={"test_"}, args=(cfg, )) + get_interface_info(cfg) + set_interface_init(cfg) + ksft_run([test_default, + test_xdp_generic_sb, + test_xdp_generic_mb, + test_xdp_native_sb, + test_xdp_native_mb, + test_xdp_offload], + args=(cfg, EthtoolFamily())) + set_interface_init(cfg) ksft_exit() diff --git a/tools/testing/selftests/net/lib/xdp_dummy.bpf.c b/tools/testing/selftests/net/lib/xdp_dummy.bpf.c index d988b2e0cee8..e73fab3edd9f 100644 --- a/tools/testing/selftests/net/lib/xdp_dummy.bpf.c +++ b/tools/testing/selftests/net/lib/xdp_dummy.bpf.c @@ -10,4 +10,10 @@ int xdp_dummy_prog(struct xdp_md *ctx) return XDP_PASS; } +SEC("xdp.frags") +int xdp_dummy_prog_frags(struct xdp_md *ctx) +{ + return XDP_PASS; +} + char _license[] SEC("license") = "GPL";