From nobody Sat Feb 7 06:14:14 2026 Received: from mail-pj1-f43.google.com (mail-pj1-f43.google.com [209.85.216.43]) (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 6073829993D for ; Fri, 23 Jan 2026 21:11:28 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.43 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769202689; cv=none; b=UvMt8MPmQ5NlCwKF7xdaSYsbzv6uZlNgdhIvhleYeGmlDiMO2rykYvvPfnsfVZ0XYBxG231wVTYwrqClUj7uACNVCygKu4e2M2eV5NK8LQjMxZxeX7v6kPBkKvH6N8/WMXWCRftLvZWZfdhYwdnmoI3tkFIKgj3i0YHu0EHDnik= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769202689; c=relaxed/simple; bh=O+ROFQDvMpAeVQShIL3e2yyFbsJrqnL7kQ8BnLOHpDo=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=nDy1p6KFP15Xvz7ZB8MG3Ixq6cIbmJ+kvD06DDCjHfB/DmL0ZJxooXDlAL2dydXlJpwMOrl5sGzm4OowuFwdzNwzz4VW91iPDgO+pN6KLSHS+/NaYGLxRMJS3v4m2AF5UMqYvYVXpyVZt8DKySIysZuPyowPHwLeUmakGbxICRU= 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=YE4tgvOj; arc=none smtp.client-ip=209.85.216.43 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="YE4tgvOj" Received: by mail-pj1-f43.google.com with SMTP id 98e67ed59e1d1-34c27d14559so1693348a91.2 for ; Fri, 23 Jan 2026 13:11:28 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1769202688; x=1769807488; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=InDutReh6fzrwpM7HlP65wtd/9C6EOjw5Npjd+TBB00=; b=YE4tgvOjmlfCL2NwjMc6EeuJ2kc+MIbD8DxqgEfYTnZxnQFrLTv8kGfZuAn0mVfbmi A42AgB1vzYB4wFBuCoWA/zVlHI1/W/0Vyey+9qz5nQcbSAUEBIRjk2fcz3gxlgtaCcss 2dMpwr0SLGALE4TFtytQJA6JjsztmnBj1mQW59rMRTydqPT/AJpD1AXKHXRy1VLM74Xh JEBdjq1hkq9OBLkG7LQLr1mEt0gkR7IESpdxi8Cew5Z87aDZVyKL9cIpkyfbtEjo3Kio T9GTVmXNjcB2i9UYuQje9AMGFUntxHUqD9WRgll8NO38ibK/56qw+dvD4CtjymyeCJUB eMnw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1769202688; x=1769807488; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=InDutReh6fzrwpM7HlP65wtd/9C6EOjw5Npjd+TBB00=; b=uSZFKsYjifwzCz0SCDZv5ts7b0zVGSUqIZPMvn/fjqwfk/6B2c14KkdMrIo0mbf8xu tXwBt1LhzRjXq5GYY812S9Mb5GjEzLkS3OCNdps9bLyfKty1T0BscTvogYU2ojnJOiXm MA1d9ZJQxuN8QqsId75l8oPmC3YHhGNYqEjfShjVdFGYWg6TZlvTR82RpfxrpOcRTsmZ 1zrYftSVhpTGTyvkMBUa8G77gHVxgpohMNQU0KZo+Uq6zpao/wHvvXmC/lN68t6b5Vel KPcS0NazeevU3ZY1kpHa3Q9PKSKVPlPllSF5K/Dw/nzLHaEVL4ipomXOczILCgb+XMkp PbCw== X-Forwarded-Encrypted: i=1; AJvYcCXdrltwxdf5bvX2o/6G92wYJJn5BZdZLoRtYJr+i/dlZ+9hq6Ute8IYKOpC0BpQxIUzq/kiGBB3uOzzok8=@vger.kernel.org X-Gm-Message-State: AOJu0YxrWsH91SH8lFsCh7ZIKV3wowIXM5NAyHkdKyfo6BH90f8pl4Eg tn9ykqKEztYWHJTyPjtrZpFzSGQaEsDuStW3Hic0WO6QufI+8bLIIsDHCsDifQ== X-Gm-Gg: AZuq6aIRwPNLVz3SCKPsMG3aDBe7D5Tjoif1CvYY0oExeCVT66WLd5ybB3kXdW3WFcA CiuAyrAZyu+ZZrl3+/gRTe/uRfTz0eLf478Bafv0zyEA/yQiw/dF/ZUVzHWCB0tizCzVT9rAXA6 X+JxOcK6R6sQV98BskyIJch+V7ZEZUhzIuKhpx0RrAaEyD+oy6esA0BjdNLluHMnHWPWjyVPdwW j7U7j6xv7HJvlVAUwTOMd6E/NnoxNahwYcXeAUYwqAEJzWDyBWLmOBLQFeYqPSbxZQl8gCJLbGC QHxSCanmez8q/OuaWwk9C2Kc7QMoKFwxjuPGEPm+aoUmDcJ0Qi0z1VIPMpyGgMDXT7x/j3aoHlq pt0Q3T8PVUp7Ffx2LsE6xLoKM+/eU5w/8AVo4/Ik2XAknG6LC5im0MUOYG4UF30Qj241iwz2Hba EF7/sKFRnpoBryy9DUwa7DzLnkToitXZ8aNhwb3umuglXhYTPYv/7PWXOLkTO/6Zum X-Received: by 2002:a17:90b:5625:b0:340:c60b:f362 with SMTP id 98e67ed59e1d1-353670151acmr3573914a91.6.1769202687520; Fri, 23 Jan 2026 13:11:27 -0800 (PST) Received: from d.home.mmyangfl.tk ([2001:19f0:8001:1644:5400:5ff:fe3e:12b1]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3536d88bc55sm2805205a91.4.2026.01.23.13.11.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 23 Jan 2026 13:11:27 -0800 (PST) From: David Yang To: netdev@vger.kernel.org Cc: David Yang , Jakub Kicinski , Andrew Lunn , "David S. Miller" , Eric Dumazet , Paolo Abeni , linux-kernel@vger.kernel.org Subject: [PATCH net-next] netdevsim: use u64_stats_t with u64_stats_sync properly Date: Sat, 24 Jan 2026 05:10:55 +0800 Message-ID: <20260123211101.2929547-1-mmyangfl@gmail.com> X-Mailer: git-send-email 2.51.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" On 64bit arches, struct u64_stats_sync is empty and provides no help against load/store tearing. Convert to u64_stats_t to ensure atomic operations. Signed-off-by: David Yang --- drivers/net/netdevsim/netdevsim.h | 8 ++++---- drivers/net/netdevsim/psp.c | 18 ++++++++++-------- 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/drivers/net/netdevsim/netdevsim.h b/drivers/net/netdevsim/netd= evsim.h index 46c67983c517..f767fc8a7505 100644 --- a/drivers/net/netdevsim/netdevsim.h +++ b/drivers/net/netdevsim/netdevsim.h @@ -109,10 +109,10 @@ struct netdevsim { int rq_reset_mode; =20 struct { - u64 rx_packets; - u64 rx_bytes; - u64 tx_packets; - u64 tx_bytes; + u64_stats_t rx_packets; + u64_stats_t rx_bytes; + u64_stats_t tx_packets; + u64_stats_t tx_bytes; struct u64_stats_sync syncp; struct psp_dev *dev; u32 spi; diff --git a/drivers/net/netdevsim/psp.c b/drivers/net/netdevsim/psp.c index 727da06101ca..0b4d717253b0 100644 --- a/drivers/net/netdevsim/psp.c +++ b/drivers/net/netdevsim/psp.c @@ -72,10 +72,12 @@ nsim_do_psp(struct sk_buff *skb, struct netdevsim *ns, skb->decrypted =3D 1; =20 u64_stats_update_begin(&ns->psp.syncp); - ns->psp.tx_packets++; - ns->psp.rx_packets++; - ns->psp.tx_bytes +=3D skb->len - skb_inner_transport_offset(skb); - ns->psp.rx_bytes +=3D skb->len - skb_inner_transport_offset(skb); + u64_stats_inc(&ns->psp.tx_packets); + u64_stats_inc(&ns->psp.rx_packets); + u64_stats_add(&ns->psp.tx_bytes, + skb->len - skb_inner_transport_offset(skb)); + u64_stats_add(&ns->psp.rx_bytes, + skb->len - skb_inner_transport_offset(skb)); u64_stats_update_end(&ns->psp.syncp); } else { struct ipv6hdr *ip6h __maybe_unused; @@ -183,10 +185,10 @@ static void nsim_get_stats(struct psp_dev *psd, struc= t psp_dev_stats *stats) =20 do { start =3D u64_stats_fetch_begin(&ns->psp.syncp); - stats->rx_bytes =3D ns->psp.rx_bytes; - stats->rx_packets =3D ns->psp.rx_packets; - stats->tx_bytes =3D ns->psp.tx_bytes; - stats->tx_packets =3D ns->psp.tx_packets; + stats->rx_bytes =3D u64_stats_read(&ns->psp.rx_bytes); + stats->rx_packets =3D u64_stats_read(&ns->psp.rx_packets); + stats->tx_bytes =3D u64_stats_read(&ns->psp.tx_bytes); + stats->tx_packets =3D u64_stats_read(&ns->psp.tx_packets); } while (u64_stats_fetch_retry(&ns->psp.syncp, start)); } =20 --=20 2.51.0