From nobody Mon Jan 26 07:40:29 2026 Received: from mail-pg1-f177.google.com (mail-pg1-f177.google.com [209.85.215.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 7F95F2C0261 for ; Wed, 21 Jan 2026 08:26:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.177 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768983968; cv=none; b=lUs15/YwIze1gmu0rcmQEJ4Yh9NtxHRg9D+hCyoBLVu4l5o6XWsLg3X3VA3/YPFAQ9KJ+FbDrwqh45wzm7fr4kBwUPAHUyFd0B6WmxtwmydC9DtmemZbxlVRF07tIF7OmFbtFhLrCrAWWqUShb/rlhzmayJtG42UrAtWxZzQeYg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768983968; c=relaxed/simple; bh=lWBVA9rGgcQanuo/TDefstMpJZ6NtU9ZljG0ClTIkfQ=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=ldbkME3EW/L88PEyqT7XHcg8+hUOSPuB3TPwcXS7kO/FGAd4q9FLxLKzGVtmxhF1fjXUiahGf87+FS1GqEHzCRPyYFKwtr9O8KPmfGgvfqaRIxcsvMVyamLCDJZ1lNmVU49fBNkViTvEXQK1GTByjuVx9YprVVdb6N4SDWA2vIw= 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=eaBsuj2c; arc=none smtp.client-ip=209.85.215.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="eaBsuj2c" Received: by mail-pg1-f177.google.com with SMTP id 41be03b00d2f7-c03e8ac1da3so2423113a12.2 for ; Wed, 21 Jan 2026 00:26:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1768983966; x=1769588766; 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=pOfh991Nf5x6cbHEyitGr4ECnygIc5lXslxo+H2b9a0=; b=eaBsuj2cp9naXuTNUfmOMDhuI6SRyD0xpw/K/fjN1G3bfYqgFKo4U5k9Dx8825fpdM Uc7h/smBcidz6impHBTLrnri9Ls1gklS7LP9wLwYgsTiCFyaFQe0VG27rbob3A9k8RPa 4t1wQNsM9SVmW4Slew/hHPBtGT7RBSB/jEDlDjE3PMemYcu01tstlGRttv+/VHD+bO9u pbqnknzibw+wQlzI/NWZ2qb86oiLVcKstXGV0Gn3IucxB4wipA6xXTBuFSWcLRVrPbHJ dsFYwmQlnYz6dfHCDwaW+XPb3rAB08N/eMYzytksLWUuECHnLSMrrFm6ly8gkVCy23Ie 1z9Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768983966; x=1769588766; 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=pOfh991Nf5x6cbHEyitGr4ECnygIc5lXslxo+H2b9a0=; b=HubW8DIttdMr9Lu+zyuWbenQG1bHdJWrftyBmJXlcxGwUYWiRwcQScQPdB8lFZwlOX eUWZ1p9xvmkBVijYqwCZ5ltDtwaBJDqzCOelG0Hj4GYgBrAjNXS1ym3XSo2lkA//eEsV sqHYqFbzX+03qbcNf2GE3zcIyiDN+CpuqGp08PCS1mjk2lD5enH6/k6SOsTTjgN0DhwF yRwN2YtYc4qhG9aiLrldvKTew0KXjFR4IVNrmpLthQI/dQN/y6IO6SOo6AhN+N2fE6nH JpCQ/MSqRSyd1TtaN1KeRYXEGZ3K4nKKI77Xq08mH/wPEzvugey4GVSvkRcGbPveB6bL 9wcQ== X-Forwarded-Encrypted: i=1; AJvYcCXx+y13pfbUZXsPoL0ubiXQ67G6PH+5o+Z6+c660rOk2ZvU9Hr+J2lMacRshDOzIfo7OReNkiwGf5o6Ue0=@vger.kernel.org X-Gm-Message-State: AOJu0YxTR83/juCuWfxDmUdM150X6itzRHojZF3YZFzJHtHVU3V4uHkz +qJxp2ccBn6dKX0Vvsuwc4GUlXkVONVBSmuUXurWCjhPrJ0yr0+bThfY X-Gm-Gg: AZuq6aIKNn5P2MRDg45PhT2aaljNxsNvIIsc3c31aflxkGFfsiMz0aPyt9jLXa+0Fen +wy4xIPtxwzQqvQQg2Te558gms1t/qaIGYoWQy+2MMWKOFUWCQet/T1zp3jSUhoULESo/trfMln E/MxzE1vGWKGQn8yzk4LbM8C2VANNUg2N+G1D3Ofsw3KCokQO8yFmr8L3S77HNUhc606aFRO0Xl xPmT8WRWRdz+f++kMNy9+hKeiqi4unt7zwSdkBRfO7YaS1NYkWSMow/nw0jqw+4gYM3FkYi7SD7 toFOZYU55OtdvJxHYqItW9651Ej13BkUiC8wPr6VJi3EsamaaNNhKRdWTT7OAwmuRFT2MT0/MyH +BCed96gucxZTeEkwUGR1RGICLOz3sTyVgiYlM4CnPRoL2h4aRP9jpeA0Ytyd2lEqlwSLYNqbtJ 3gC/7YxbKu5v45fEhfnfN4lbjj8fcwK60tIDJTdyhsOtTHeO+2PIbNLw== X-Received: by 2002:a17:903:1110:b0:271:479d:3dcb with SMTP id d9443c01a7336-2a717518996mr161853105ad.6.1768983966532; Wed, 21 Jan 2026 00:26:06 -0800 (PST) Received: from d.home.mmyangfl.tk ([2001:19f0:8001:1644:5400:5ff:fe3e:12b1]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2a7190d14cfsm147637005ad.38.2026.01.21.00.26.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 21 Jan 2026 00:26:05 -0800 (PST) From: David Yang To: netdev@vger.kernel.org Cc: David Yang , Juergen Gross , Stefano Stabellini , Oleksandr Tyshchenko , Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , xen-devel@lists.xenproject.org, linux-kernel@vger.kernel.org Subject: [PATCH net-next] xen/netfront: Use u64_stats_t with u64_stats_sync properly Date: Wed, 21 Jan 2026 16:25:46 +0800 Message-ID: <20260121082550.2389249-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/xen-netfront.c | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/drivers/net/xen-netfront.c b/drivers/net/xen-netfront.c index 7c2220366623..0969d5c9f6b7 100644 --- a/drivers/net/xen-netfront.c +++ b/drivers/net/xen-netfront.c @@ -97,8 +97,8 @@ struct netfront_cb { static DECLARE_WAIT_QUEUE_HEAD(module_wq); =20 struct netfront_stats { - u64 packets; - u64 bytes; + u64_stats_t packets; + u64_stats_t bytes; struct u64_stats_sync syncp; }; =20 @@ -634,8 +634,8 @@ static int xennet_xdp_xmit_one(struct net_device *dev, notify_remote_via_irq(queue->tx_irq); =20 u64_stats_update_begin(&tx_stats->syncp); - tx_stats->bytes +=3D xdpf->len; - tx_stats->packets++; + u64_stats_add(&tx_stats->bytes, xdpf->len); + u64_stats_inc(&tx_stats->packets); u64_stats_update_end(&tx_stats->syncp); =20 return 0; @@ -843,8 +843,8 @@ static netdev_tx_t xennet_start_xmit(struct sk_buff *sk= b, struct net_device *dev notify_remote_via_irq(queue->tx_irq); =20 u64_stats_update_begin(&tx_stats->syncp); - tx_stats->bytes +=3D skb->len; - tx_stats->packets++; + u64_stats_add(&tx_stats->bytes, skb->len); + u64_stats_inc(&tx_stats->packets); u64_stats_update_end(&tx_stats->syncp); =20 if (!netfront_tx_slot_available(queue)) @@ -1249,8 +1249,8 @@ static int handle_incoming_queue(struct netfront_queu= e *queue, } =20 u64_stats_update_begin(&rx_stats->syncp); - rx_stats->packets++; - rx_stats->bytes +=3D skb->len; + u64_stats_inc(&rx_stats->packets); + u64_stats_add(&rx_stats->bytes, skb->len); u64_stats_update_end(&rx_stats->syncp); =20 /* Pass it up. */ @@ -1400,14 +1400,14 @@ static void xennet_get_stats64(struct net_device *d= ev, =20 do { start =3D u64_stats_fetch_begin(&tx_stats->syncp); - tx_packets =3D tx_stats->packets; - tx_bytes =3D tx_stats->bytes; + tx_packets =3D u64_stats_read(&tx_stats->packets); + tx_bytes =3D u64_stats_read(&tx_stats->bytes); } while (u64_stats_fetch_retry(&tx_stats->syncp, start)); =20 do { start =3D u64_stats_fetch_begin(&rx_stats->syncp); - rx_packets =3D rx_stats->packets; - rx_bytes =3D rx_stats->bytes; + rx_packets =3D u64_stats_read(&rx_stats->packets); + rx_bytes =3D u64_stats_read(&rx_stats->bytes); } while (u64_stats_fetch_retry(&rx_stats->syncp, start)); =20 tot->rx_packets +=3D rx_packets; --=20 2.51.0