From nobody Sat Feb 7 08:44:18 2026 Received: from mail-pj1-f51.google.com (mail-pj1-f51.google.com [209.85.216.51]) (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 CCA2D47A6B for ; Fri, 23 Jan 2026 16:22:23 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769185345; cv=none; b=Nmpr4+SKqXnvlkOylN83SoUrpk0sf7spZF3+GpQJlNEGD81F0IpCsjnAntV6/pSGvviHipp2uTj3QGZYsjy5E9T0NQvLxjN2eKBWnIbst5HIGRd7RUOJXb7frR/Web/nvL4BbUTYXODLetOuRNu0h649jDOJXPSByREiJ81qtfU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769185345; c=relaxed/simple; bh=w5MIfnlIHaBZE9Sx+nDab+c35nSGwa8xj0TFBnbl3RQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=KrAcNgkyaluss/Nz6a8dGQxY2x5xy7lewCm8I6mHNAg1QvhACwz06xI9cSGJQ9ANMaYZZAMO87JqNCqJNAHOFDbgPPFoOtudPg6wo8Y+AzLefTtuWjFb19CAe0i89FkR66wozFU14A3RgLpfTHgj5wuCHBe2dAbfXJP4ZTf5HEo= 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=DYAsjmwx; arc=none smtp.client-ip=209.85.216.51 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="DYAsjmwx" Received: by mail-pj1-f51.google.com with SMTP id 98e67ed59e1d1-34b75fba315so1446067a91.3 for ; Fri, 23 Jan 2026 08:22:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1769185343; x=1769790143; 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=j1hAVBooT6RSatSb0JkTTI9JelC7CFfOn3FnTuarbB4=; b=DYAsjmwxu3adShH3XSnF59IQqoBbiazlOzRhwU8sDXDpIni6snHqasTsswFd6vGHdb oP88BvSbTABYhYtrHTxCoTwD6ls9O2ygMjTFXnSeElpsx9gsnplq2qLl01hQvqQpRH9q Fqe3e2p/uwarWt8kEzt00Ls8wBCtFfrj07PqrdlrSgtUvmCDVMeQCUzo1/fxP38JhIwl w8BJTms5Tgs5rAoGP5GIvo0Lg38sUZeYnPb0jh825q1IkgXUGsAtlHKNPMUB+BC4d/mu J/wCjC09I36X/r5gr1ABpx/qRT8Od3D4guo7SMw5BQgr9uMrGYlxVAIBxwLuRy3Veihe gtfA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1769185343; x=1769790143; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=j1hAVBooT6RSatSb0JkTTI9JelC7CFfOn3FnTuarbB4=; b=Y3DKG9oolR9s38bXhpNW7duwoBj7PEoo6DVh7vVdughomeel3Tvv7F8w5fseuyWoI6 7wyl+dORkoXSB3SKPry5YPjTPBMAdB6I3IZ7MLzZSl0IVxiWWlBr5rp2HOieBa1LuZQh Lgk6A2NIcN6KtwG3jZyLOsSaex8J4UnMTewd0TiN5YIt0wu82RItfq0NORX2JJrgAIp0 jp1agvi8mVTYjHEsL92S4YNakcELs2eI7q94Q9wlg7FrrL3WtG7yDwwm/jTszNipPFhD 8j4fdwe7QGjsYT+vyD3oJCgS95L+IXq/myED5imB5r1RlnMQRa54Q334fYOdeb6Y1b0T tZIA== X-Forwarded-Encrypted: i=1; AJvYcCWbI51OmfFVEbxH8DAxJLcLXUaLtAT55hrsNDFDfPmKJsGuze7lfe5zxvWYrWbdpvcuNthkid3ki6BgCXg=@vger.kernel.org X-Gm-Message-State: AOJu0YzAnI2tqHrgCw3y0kNzx+9DafuMU27Xy2Lj1Ki8WHyNnKYctpYK FodZaTfpAzh/nIJUFVadxZ9kDW8d7Ksrmczhgt+YDqXEH6F9u37b5Izd X-Gm-Gg: AZuq6aKXa3uPGPltcQlPcloBGBjavsAy2dVEObj5wjkq6y+dxqTNPtsaLjl8RcHV822 GItB4kfYhk/zhKqySKyNUcCWv+/MfDc+AWBix1vwlp/i0cTHZLMGsehDlKD8p1ikiwjVaeqEqoV ffjvkpx0gvL+sDDN2/n/qMXpHdt5smujUUG8u6JH/13EaEKSnMe9OQP57QfHLbSgeOgvwo7huQw 8KBau+E1QiezYmVUh2K/24mloEVB14oP7Qv/nMQB4AYMdiShLHtDOXQwg9hEdJAGp40vbknmCtX msrojHzRrxxTRC4HRm1U1DoVRRj2nSKFEhPGFWG0g7FFslzHfpL3cjwyN0TUQxfKur/d09n9CvO XxH2Tc1GEgJKYHz2ZXZ/a6e97BQsHxl4bUSaqUDd21t0DPpnnuTht0VOeekD6WTatjkKYNOhLVL z0XBArhB9qWOVvAy6FwKt9UfL0HX7iXPNkuLvoBIIVcVMhzh6HqYe+eQ== X-Received: by 2002:a17:90b:2244:b0:349:3fe8:170d with SMTP id 98e67ed59e1d1-35378ba82b6mr1242634a91.3.1769185342968; Fri, 23 Jan 2026 08:22:22 -0800 (PST) Received: from d.home.mmyangfl.tk ([2001:19f0:8001:1644:5400:5ff:fe3e:12b1]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3536dc50882sm2496967a91.16.2026.01.23.08.22.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 23 Jan 2026 08:22:22 -0800 (PST) From: David Yang To: netdev@vger.kernel.org Cc: David Yang , Sabrina Dubroca , Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Nikolay Aleksandrov , Ido Schimmel , Simon Horman , Aaron Conole , Eelco Chaudron , Ilya Maximets , Shigeru Yoshida , Stanislav Fomichev , Breno Leitao , Carolina Jubran , Kuniyuki Iwashima , Guillaume Nault , linux-kernel@vger.kernel.org, bridge@lists.linux.dev, dev@openvswitch.org Subject: [PATCH net-next v2 1/7] u64_stats: Introduce u64_stats_reads() Date: Sat, 24 Jan 2026 00:21:33 +0800 Message-ID: <20260123162159.2877941-2-mmyangfl@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260123162159.2877941-1-mmyangfl@gmail.com> References: <20260123162159.2877941-1-mmyangfl@gmail.com> 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" The following pattern was observed in the code tree: do { start =3D u64_stats_fetch_begin(&pstats->syncp); memcpy(&temp, &pstats->stats, sizeof(temp)); } while (u64_stats_fetch_retry(&pstats->syncp, start)); On 64bit arches, struct u64_stats_sync is empty and provides no help against load/store tearing. memcpy() or struct copying does not guarantee tear free, although compilers never generate such instructions in practice. Theoretically the affected code should convert to u64_stats_t, or use atomic operations properly. However since there are needs to copy chunks of statistics, instead of writing loops everywhere, we provide a safe memcpy() variant for that purpose. Signed-off-by: David Yang --- include/linux/u64_stats_sync.h | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/include/linux/u64_stats_sync.h b/include/linux/u64_stats_sync.h index 457879938fc1..15ea4db2a77b 100644 --- a/include/linux/u64_stats_sync.h +++ b/include/linux/u64_stats_sync.h @@ -79,6 +79,14 @@ static inline u64 u64_stats_read(const u64_stats_t *p) return local64_read(&p->v); } =20 +static inline void *u64_stats_reads(void *dst, const void *src, size_t len) +{ + BUILD_BUG_ON(len % sizeof(u64_stats_t)); + for (size_t i =3D 0; i < len; i +=3D sizeof(u64_stats_t)) + *(u64 *)(dst + i) =3D u64_stats_read((const u64_stats_t *)(src + i)); + return dst; +} + static inline void u64_stats_set(u64_stats_t *p, u64 val) { local64_set(&p->v, val); @@ -110,6 +118,7 @@ static inline bool __u64_stats_fetch_retry(const struct= u64_stats_sync *syncp, } =20 #else /* 64 bit */ +#include =20 typedef struct { u64 v; @@ -120,6 +129,12 @@ static inline u64 u64_stats_read(const u64_stats_t *p) return p->v; } =20 +static inline void *u64_stats_reads(void *dst, const void *src, size_t len) +{ + BUILD_BUG_ON(len % sizeof(u64_stats_t)); + return memcpy(dst, src, len); +} + static inline void u64_stats_set(u64_stats_t *p, u64 val) { p->v =3D val; --=20 2.51.0 From nobody Sat Feb 7 08:44:18 2026 Received: from mail-pg1-f170.google.com (mail-pg1-f170.google.com [209.85.215.170]) (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 6E5E82DA750 for ; Fri, 23 Jan 2026 16:22:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.170 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769185352; cv=none; b=g97Vkd9LZ3mPph8k5MFMhDT3oe7usUIPBPI+3+6r9B10i0efORvXSQOeiwvXmxjLuE59XVMeO5rSPe4ddc0K+YSx07WCU88pt2RNn6kde2VvikuNsWYFe2JjS3L93DiffyMZmdPBpoc7kk+L3/TJOtlRrPtWQEdluOHaMaI58Zk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769185352; c=relaxed/simple; bh=CWAmd2gDO+bz+iiUcK+EZ5ZuNzlcyN9HRHG8OTxXoro=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=hAMfAZLcVDZyuYvrRTPLsY45YNCg+AhD8nzsZ9geXBj+vmOuJDR48rWgJg5H9m2TBWtfw+mKdWrqYg3/tprsGazxKeoaCCKYqqo/irp2GLaboBtiYt0LEuOHLMWWxj8xog1WT2uQzRJM/jz1U4JcXrFCS8YJG+Zvkt9Dg1ZyYTY= 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=Z5lxFDcV; arc=none smtp.client-ip=209.85.215.170 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="Z5lxFDcV" Received: by mail-pg1-f170.google.com with SMTP id 41be03b00d2f7-b4755f37c3eso1685910a12.3 for ; Fri, 23 Jan 2026 08:22:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1769185351; x=1769790151; 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=/v74RSchMzcO/nfO8KMHLNyi6DHe8JbEgv9uztbjT94=; b=Z5lxFDcVKbEg3CXyyUVQO1roqDKC76Pbn1gu3txOpP8wnDbuEQCE8Hqds2uS3gNic0 U+ZBe0SOrRvQLRt9nRuffQew107wk42pDDuoMzSES6a0iA0SLxLcCExVN2WeTcZ++W7s 6VlPOGaJy5GxJ2szjseJY1xqr+63t02Y5ibox3HSnTWG1C9YV6OdzhNuRhrCe+BcLbWw e/lSkCnyJZ96jYd80B42dZpMpssAixKlwR/PAA3dZY6FsWh6VMBNafNmEGoQ6wyfkpbP akVaSFxH6vhE3Q52htexu2GQdGolMzxjzOTnyMcEyw7djSwloXnWibIBtf1pFyqhepCN CvwA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1769185351; x=1769790151; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=/v74RSchMzcO/nfO8KMHLNyi6DHe8JbEgv9uztbjT94=; b=gF0V51MgJSjv4LFuHEFAYm0pF3MAA58pfCiLS4voAm1CkY0fvVGky5uwQsrmLcjoq7 AQOSrW9teR1Jodl7PHRqcZYVPeq67GLD8fbxMTjOqU3MWDh4IZJRLQb/OKLRodfEgW+n IkO6ZWzY/NW0rhM0wBqY/956NFsaZEoyY9wsbkbsUORHlORy5rpxcY3cNkq2dCpvEkMI x/Pu4xB4qKRFR46ZSVt+ABsvEXWVkR4esYO69V95cDlwSoAzEubDucG/eq7GmoGZBueA o8haKz5BiqUO8xIy6L6/VcJVYUo0aVMH8Q0cRheCjrq4Qin8FLEm5rYvR+pfBN1m8SCF A3cA== X-Forwarded-Encrypted: i=1; AJvYcCUsMFALobKW6AFXztYdqH2OJzzGvMQ/L0XC28Lvmv95DnmB06Yum+n5bQ/CQpub4Niq5In6tDgsppkjRcs=@vger.kernel.org X-Gm-Message-State: AOJu0YwSy7FdvI9ZpMpZmn1qlbiLwqx/8ooJUpMTHuBSyly1ejSLiLTH jSDgmPhm/9JuiFajOCh/1jClqwY2WUqENj+dhrR1UjDnGSJGqh1VxH9F49XnoQ== X-Gm-Gg: AZuq6aLppWVANOXrmfzFbAcfyDf4j95ezVfzbSHbnm+QrMd0OMBxXY1bcXOUGAUeWH/ aR+NtvZnCkHhqmFcMwtQCUVlRcciLKBWLmMq0FFos0sdxoX7jBDX5PIRSWRimSJ+yI9XCDj7YVS ImyCX/t7mbD9UCSLZgj+aHWaR6Be2wTQcN6YMpyPqL23DZw6Mel40HpXXSK/MbcZnup+ly7Eh3c 0Z4/u83deX/wRRUeEwXgX9j8eKgo2cegyPTolK8qhU3PUy9g1sTDmRZzNRt+VeN5PwSUNk8vhZt ogKrbLDO8hZZpZZ2NfwujQSp+UN3SmRVtMwQQuv2TOooCtkYbGJBBR/VBOMVUY+BZcOqz+bn4oP FuwTCCQZwpSyn0IOohWqad1/L5Rg5K7nLfQgWyzMS34G42baRvpe84KF1nFPyhkLfqHMhpQbwMl 6F83nK+Oro44rzjtOhJUgXIwAjrP6aYKSOR9ovvDZFZQzLdg2SqVGiwLdNLPiojGBe X-Received: by 2002:a17:90b:548d:b0:353:38b3:dccf with SMTP id 98e67ed59e1d1-353688574f4mr3025512a91.23.1769185350618; Fri, 23 Jan 2026 08:22:30 -0800 (PST) Received: from d.home.mmyangfl.tk ([2001:19f0:8001:1644:5400:5ff:fe3e:12b1]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3536dc50882sm2496967a91.16.2026.01.23.08.22.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 23 Jan 2026 08:22:29 -0800 (PST) From: David Yang To: netdev@vger.kernel.org Cc: David Yang , Sabrina Dubroca , Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Nikolay Aleksandrov , Ido Schimmel , Simon Horman , Aaron Conole , Eelco Chaudron , Ilya Maximets , Shigeru Yoshida , Stanislav Fomichev , Breno Leitao , Carolina Jubran , Kuniyuki Iwashima , Guillaume Nault , linux-kernel@vger.kernel.org, bridge@lists.linux.dev, dev@openvswitch.org Subject: [PATCH net-next v2 2/7] u64_stats: Doc incorrect usage with plain variables Date: Sat, 24 Jan 2026 00:21:34 +0800 Message-ID: <20260123162159.2877941-3-mmyangfl@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260123162159.2877941-1-mmyangfl@gmail.com> References: <20260123162159.2877941-1-mmyangfl@gmail.com> 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 64-bit architectures, u64_stats does rely on the load/store atomicity of 64-bit data. However, users often mistakenly believe that the helpers could also protect/"lock" plain (64-bit) variables, which can lead to load/store tearing. Remove the misleading "non atomic operation" comments and add explicit examples of incorrect usage. Users may also be tempted to use memcpy() or struct copying. Doc the usage of u64_stats_reads() for this case. Signed-off-by: David Yang --- include/linux/u64_stats_sync.h | 41 ++++++++++++++++++++++++++-------- 1 file changed, 32 insertions(+), 9 deletions(-) diff --git a/include/linux/u64_stats_sync.h b/include/linux/u64_stats_sync.h index 15ea4db2a77b..10f988170e51 100644 --- a/include/linux/u64_stats_sync.h +++ b/include/linux/u64_stats_sync.h @@ -39,21 +39,44 @@ * spin_lock_bh(...) or other synchronization to get exclusive access * ... * u64_stats_update_begin(&stats->syncp); - * u64_stats_add(&stats->bytes64, len); // non atomic operation - * u64_stats_inc(&stats->packets64); // non atomic operation + * u64_stats_add(&stats->bytes64, len); + * u64_stats_inc(&stats->packets64); * u64_stats_update_end(&stats->syncp); * * While a consumer (reader) should use following template to get consiste= nt * snapshot for each variable (but no guarantee on several ones) * - * u64 tbytes, tpackets; - * unsigned int start; + * u64 tbytes, tpackets; + * unsigned int start; * - * do { - * start =3D u64_stats_fetch_begin(&stats->syncp); - * tbytes =3D u64_stats_read(&stats->bytes64); // non atomic opera= tion - * tpackets =3D u64_stats_read(&stats->packets64); // non atomic o= peration - * } while (u64_stats_fetch_retry(&stats->syncp, start)); + * do { + * start =3D u64_stats_fetch_begin(&stats->syncp); + * tbytes =3D u64_stats_read(&stats->bytes64); + * tpackets =3D u64_stats_read(&stats->packets64); + * } while (u64_stats_fetch_retry(&stats->syncp, start)); + * + * Remember point #2: update_begin()/update_end() and + * fetch_begin()/fetch_retry() are no-ops on 64-bit architectures. u64_sta= ts + * _cannot_ be used to protect plain variables against tearing. + * + * u64 stats64, cnt; + * struct { u64_stats_t stats[10]; } st, buf; + * + * u64_stats_update_begin(&stats->syncp); + * stats64 =3D cnt; // no + * stats64 +=3D cnt; // no + * stats64++; // no + * st =3D buf; // no + * memcpy(&st, &buf, sizeof(st)); // no + * u64_stats_update_end(&stats->syncp); + * + * do { + * start =3D u64_stats_fetch_begin(&stats->syncp); + * cnt =3D stats64; // no + * buf =3D st; // no + * memcpy(&buf, &st, sizeof(st)); // no + * u64_stats_reads(&buf, &st, sizeof(st)); // use this instead + * } while (u64_stats_fetch_retry(&stats->syncp, start)); * * * Example of use in drivers/net/loopback.c, using per_cpu containers, --=20 2.51.0 From nobody Sat Feb 7 08:44:18 2026 Received: from mail-pj1-f44.google.com (mail-pj1-f44.google.com [209.85.216.44]) (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 82C4B30EF9D for ; Fri, 23 Jan 2026 16:22:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769185356; cv=none; b=A48AJhqFmxGxh8IaXuNbonOx30aS9pvIz3KfbQvbTFUutROkNCneyQ/gQuwA6ueTw6agRCg/UaaEvUuUmbIDVaIOx7e++m2alIoQX73GlKO7tGsrvv0Kz531JcLFQnz3KFG9uUASxORQPA6GN87Ag4gI/hhklc1mYHIpaP3Dqag= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769185356; c=relaxed/simple; bh=fuHJNs9q0jub17ekWOOL9sffjn3h+K2Q6gGWIFoNBxw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=BhB0FBP0pFq55+IM/8nUFvEBkB5J3STj9+uuqBaijsfI4VBDrOxXWKSXv6mFGpnzd7YonTnE9POQ/w/vK8n4J1AmG/0BNhJ4ZRTDk3ZsMAIBn39463bv+b/t7cBYpD82D+e8grawYuR2OR943zojS0D5V8sfXwFN+l0aEPD13N8= 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=fksHFozl; arc=none smtp.client-ip=209.85.216.44 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="fksHFozl" Received: by mail-pj1-f44.google.com with SMTP id 98e67ed59e1d1-34b75fba315so1446191a91.3 for ; Fri, 23 Jan 2026 08:22:35 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1769185355; x=1769790155; 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=ZjJ7CPS5/DqUp4cokLUu32N2BVEoOZUcO8cPBS5b2w8=; b=fksHFozlNfCfYywy6LVPRLHO0gQoNXGqrZZSPj26UOncI5P3bL+ZoNLQuJhsqL7+sv 2f+8yIYZKOt6GnG6EYfg3L6jHwYSsC7RiYyuazJyIqBUo1bVn/NhXz8zDHCSveaL4Y5r N2gVVAA1gJp88pqw7EFSNxZHDcROBvQjebxFYS6aOI9wijX8TDpWcwUBnNCIQyhuiwWe w7QrYDmvUkhcGNrxRZSi2vsgndUJ7z8Vjc0AgWzsyAGqrQHTCE4ydYwiOp/KYamUnT4Y rSpiXI6uLDPhjULIoi/x+P9gNZdSEZjHGnZgKujkprLvzZEu9FkVYgitBAkwxUFklaZF 7a1w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1769185355; x=1769790155; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=ZjJ7CPS5/DqUp4cokLUu32N2BVEoOZUcO8cPBS5b2w8=; b=e+QQjRTQS9aCYtrkWTUQvbAJI6HPVvedLCLiE0x5Y3sg+nGacM1kRf8dUrnJ+pdcXq XE1DNrfPs58zw5xPFjLT6ioSLTP2/ha4uBusvGkw5vSf4GksoQX6leDAzDc1nSftPlH8 dAC+yepu3Il3XF5wRqhesi6fX1MyNfoOZWppzVaANi1SFTpIdRySCGL8ajHTFuWBB7NX ufMuuCpz6Hi+88U+g+GpmfKQPea3p6mcvn3kxLf3bGE11AW6+CzdPh0Jj3SGbxfJVX9S AG1ttB5EVYJWNu2RzsczH038OvkkJw/sG0ytpwgX9e9YK+1RU4iS5RDJoRksm+ql+ZzV HWLA== X-Forwarded-Encrypted: i=1; AJvYcCUmYVhX00ODDvXYNQ+FkQJW8NzKfM4m1HbIlvXAtWYLO1Z8wgi25bYUV9UxrwMilID1uHL3cU6/DOLHCug=@vger.kernel.org X-Gm-Message-State: AOJu0YxcIhT1MC8mzwqWAlly3nvHBlIpH+Jyy5pznC+Wc1G5ow3W4mMs UkfPWial/bDM9X8s+iWzuWemh+JT3az4ifKuk+Xyhd+Em85dHinhca5P X-Gm-Gg: AZuq6aLf6vjwRNu22kGvHYh0XlntjikYyhZC2DUn2MYm7wjp37yuTsNsQjXxAYMD/RZ XnJEZu6Fu9jWXR1RxXyGJQOKv4AzQ6jNoiuMNV/t+l8ZLh14kcaGllT9vJSpZPs274FTfjHAE0H iMYY+P0ri6hImft8COAEyrSdL7xPcGJOfoWgG6Q2VeVLe2qdBotNoWJJ7Z++gVqXbMsgqphLqLX Xm2ma0GqIJEX8V0qzw9tsJcCVC1HgFtEb1ix5DsAkagjSepGJHLBxm3WkhULVNMx9vjYye0jcju clZ1nJrt3NU4SOPGBB0n8HnCzp748HF1gM89FR06DKU9Mce0ema0QVIEKaF1fhFQhZpB82x+zO/ Q7wlOklhujPI77q7rbBIaXkZqLkNj1M1nFvuOB2w2X5SPFTlOIwiMI4bwRog6osZUDZu9cDVORQ Kk0sff9tduJ1dPfOGoBoBgwDRoDaxBVosWyxyZDw0PFJoJytgHfKikKw== X-Received: by 2002:a17:90b:3c06:b0:353:49f2:1e7c with SMTP id 98e67ed59e1d1-3537b272a3cmr1132136a91.30.1769185354648; Fri, 23 Jan 2026 08:22:34 -0800 (PST) Received: from d.home.mmyangfl.tk ([2001:19f0:8001:1644:5400:5ff:fe3e:12b1]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3536dc50882sm2496967a91.16.2026.01.23.08.22.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 23 Jan 2026 08:22:34 -0800 (PST) From: David Yang To: netdev@vger.kernel.org Cc: David Yang , Nikolay Aleksandrov , Ido Schimmel , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , bridge@lists.linux.dev, linux-kernel@vger.kernel.org Subject: [PATCH net-next v2 3/7] net: bridge: mcast: fix memcpy with u64_stats Date: Sat, 24 Jan 2026 00:21:35 +0800 Message-ID: <20260123162159.2877941-4-mmyangfl@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260123162159.2877941-1-mmyangfl@gmail.com> References: <20260123162159.2877941-1-mmyangfl@gmail.com> 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. memcpy() should not be considered tear-free. Use u64_stats_reads() instead. Signed-off-by: David Yang --- net/bridge/br_multicast.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/net/bridge/br_multicast.c b/net/bridge/br_multicast.c index d55a4ab87837..0f8e15b4fa60 100644 --- a/net/bridge/br_multicast.c +++ b/net/bridge/br_multicast.c @@ -5201,7 +5201,7 @@ void br_multicast_get_stats(const struct net_bridge *= br, =20 do { start =3D u64_stats_fetch_begin(&cpu_stats->syncp); - memcpy(&temp, &cpu_stats->mstats, sizeof(temp)); + u64_stats_reads(&temp, &cpu_stats->mstats, sizeof(temp)); } while (u64_stats_fetch_retry(&cpu_stats->syncp, start)); =20 mcast_stats_add_dir(tdst.igmp_v1queries, temp.igmp_v1queries); --=20 2.51.0 From nobody Sat Feb 7 08:44:18 2026 Received: from mail-pf1-f195.google.com (mail-pf1-f195.google.com [209.85.210.195]) (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 AA6DC2F7449 for ; Fri, 23 Jan 2026 16:22:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.195 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769185360; cv=none; b=CTN1cxgRhEc2RGb3lzYJ+85HhPflDjaciewS9ENgef4E2JcQjxYKHonyTDB2xBQKSgP4+Gi0+Y2C1+lOUxoohPNJ2zB7MzD2K7zjacbbdsu2zkyOihKJnf66Yn1KYXE76VpMmCYf8kwh3s65GVmsNi2yjHGymAF+k+EvxRVWupA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769185360; c=relaxed/simple; bh=ebR7mnvmUk09kMYUV5Bt13RjTDGx9OqdO6kQwNpsnsY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=YxVlSq+9cCbQTQ5DLsypbqnoZa/k4v0le5kCvhdoPIYuVynTGCXFeWXKjxmRwGJ0FkX18qZr58WTRwI4ttEasbD1wu88yLrzb0mCsnYpti6kuK/NrGhuAs4/yVmGo8cfqUFIw+1oBX1TEVwurauwlspUyWS/jUwDoNEoFzN+LWw= 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=QU4HGXoA; arc=none smtp.client-ip=209.85.210.195 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="QU4HGXoA" Received: by mail-pf1-f195.google.com with SMTP id d2e1a72fcca58-81e9d0cd082so2026738b3a.0 for ; Fri, 23 Jan 2026 08:22:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1769185359; x=1769790159; 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=jLTS6NfyuP/b1KIM5s5ZF+t0Cp59fs0bP2npjwZuNoA=; b=QU4HGXoAkvWh07+y4bhKnwRk4r8nPWzQz4PHsXSiibw0KosIrDRYPTyjCb4VVIV3vp olD6NhVnbzbBDnrdTh9E1uxKfPr3yEjxsUT9nbjBz+UNGqT4i/U3k36NORs+0hJhlbyG SXcB2yfTV4taSQAYfHDQ+Ssw4E5S1s4TrQ2QrStRhjNXCSBV+UaBwQqJJ+YoUwYvJobS M7ndzv93OzGbBKy2AoJ9jwZ8PljxxifsR3O4LryYAT7OkNBkihMrunTYc7p+RTxyMQ02 iWxrkQaW62GGp/yE9AtCzdJQEKgo3dZiCvM2r04CW1HUADSBb7s+bagPciFcnQecUxic iJTg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1769185359; x=1769790159; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=jLTS6NfyuP/b1KIM5s5ZF+t0Cp59fs0bP2npjwZuNoA=; b=UHvSaiEXRAo1j5VoP0FqgDIo8xgc0VwGD6n/WpbnxO1Im5RX0EzjJJyvsql+aFnZTD t1egmCvk+ikyYlUxmQsyM+j0rk+/rg4xg5arHcLlqklguq4kB6CVQsVCWs3WFIfK33Q0 9OiDJaN26i6cflhtE0angXCwrKy8p8eTCLPyqPO+mJS9gCyIB+8/euqXZhrE5OhJ0ldh HhLA2oRI/K6hVRzx27TupP8p70n564fK/ETTbA9lFohByh3NYpOT93ZZ9TZsgBUuSw4r uxJLZW4iR+QLrFQ0JsEnWsqZmUlIdn3bTS2IJO3XuUTMrnBeYn4iWV9P8TmtR4AbqVDK laVQ== X-Forwarded-Encrypted: i=1; AJvYcCXJtWX1LJGjszBrEaklh/VzIDWm+PzzGMIYiYCqC6zOrn4LBuK/71J4/esJ78zRHfsfTROtZSBcC0ETOwE=@vger.kernel.org X-Gm-Message-State: AOJu0YwiDB4czgX9ldJpnqBQWjKuJNY+U71aSBKF0+R+bXo0/hFC9ZKx H3rFNdrm47W0D3CSfs8/d3l0f1GjjqbVhDocI1Vu8xccb6lrPLMQb8r3 X-Gm-Gg: AZuq6aK57n8/+x5OzldZDtvysRLpx/chTvZH9RrfOuGgsur+uyyYtJLgLK9tNsAtCLu 8TZNAbSBj3dfw1mP6kYfESKRKC+r9I4IXgkUDXnK/MxaHV8zH4tpxXyjtCqmlc/P3CEzDH8ZUl8 xQ2/qas1UH2R1ir9202FYroPAgJQ/tbki+z78FtpSGCLqhzIQ15KPF1W/St48SEoEM5Ut9OUL8/ /48jkw8JDygUTOzsWNX6Qy11DfyUQZVsrOIJJjUoRx1CoQYDS+S0vsyMz6NYE/rI6YdRXl8l5p4 63fUhyROQWWJMafJ/C8GgIPZMx8Ii7sn9jb9MnkAwxJkO+eQq3/nlWZdYE1rutAGYczbFZSoJXO LQ2KvYM/wfpCeEPhajQhFpBHCXYp1zvxVmo/3seReNEOSWQSmcC++sbn6MhkjrJWuhQ5dSM0PGK OW6jVTjBpjkzmM25xlkO8cngU/bctOYRVd2kJ6GkJBLZlZpOh3ybpeXg== X-Received: by 2002:a17:90a:e185:b0:349:5b1b:78be with SMTP id 98e67ed59e1d1-353688574b1mr3491913a91.17.1769185358906; Fri, 23 Jan 2026 08:22:38 -0800 (PST) Received: from d.home.mmyangfl.tk ([2001:19f0:8001:1644:5400:5ff:fe3e:12b1]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3536dc50882sm2496967a91.16.2026.01.23.08.22.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 23 Jan 2026 08:22:38 -0800 (PST) From: David Yang To: netdev@vger.kernel.org Cc: David Yang , Aaron Conole , Eelco Chaudron , Ilya Maximets , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , dev@openvswitch.org, linux-kernel@vger.kernel.org Subject: [PATCH net-next v2 4/7] net: openvswitch: fix load tearing with u64_stats Date: Sat, 24 Jan 2026 00:21:36 +0800 Message-ID: <20260123162159.2877941-5-mmyangfl@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260123162159.2877941-1-mmyangfl@gmail.com> References: <20260123162159.2877941-1-mmyangfl@gmail.com> 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. struct copying should not be considered tear-free. Use u64_stats_reads() instead. Signed-off-by: David Yang --- net/openvswitch/datapath.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/net/openvswitch/datapath.c b/net/openvswitch/datapath.c index d5b6e2002bc1..8ba94df7f942 100644 --- a/net/openvswitch/datapath.c +++ b/net/openvswitch/datapath.c @@ -770,7 +770,8 @@ static void get_dp_stats(const struct datapath *dp, str= uct ovs_dp_stats *stats, =20 do { start =3D u64_stats_fetch_begin(&percpu_stats->syncp); - local_stats =3D *percpu_stats; + u64_stats_reads(&local_stats, percpu_stats, + sizeof(local_stats)); } while (u64_stats_fetch_retry(&percpu_stats->syncp, start)); =20 stats->n_hit +=3D local_stats.n_hit; --=20 2.51.0 From nobody Sat Feb 7 08:44:18 2026 Received: from mail-pg1-f169.google.com (mail-pg1-f169.google.com [209.85.215.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 5610E31961A for ; Fri, 23 Jan 2026 16:22:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.169 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769185365; cv=none; b=KDkSsvPZ6HY4K+KlFphZa9IpGvR4ttIlsDFJ/eFym8JH/zr/OheXWnfo3guWZPocP2aei9wpMDZFF0T3u7/AMeYlviYL+Ll4pXCE8oq472U+OJloIrx0MXsn7KdVDpl0mCjkcS14j/Dccbv+Pp0Vi5kZt5UArFndYGXasx+GTcI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769185365; c=relaxed/simple; bh=uC8RnDXJEyolwirjZwS1oaycN7CLJsgzdDtpCMvAGEU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=W2ZxaphDyT88ShkNX1UMpXFW7ZMbV9Ervdr+U/bloFzD8Q/fwr2MNuPY5zz+2ulxYdoC1GOSBC6yAWPehfPfmid93mEfiNYGdlGKA2/1v3JjRlwU0KM3B+zZph2jiN/eiPtgXcy354GRfEN0GJ4dRDfWliOo3+bGbJNUppSSWl8= 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=BXVB4cKV; arc=none smtp.client-ip=209.85.215.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="BXVB4cKV" Received: by mail-pg1-f169.google.com with SMTP id 41be03b00d2f7-b6ce6d1d3dcso927068a12.3 for ; Fri, 23 Jan 2026 08:22:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1769185363; x=1769790163; 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=jUm4PVJC35ODo4dBXeaCbuPGZ0/bE+N+0wlaMBGWiTc=; b=BXVB4cKVPVYymn7LqqwLhIF9Z/wP9uczM17Dgq+w9gzcHvAMP99E36R4n9iOCjN6C6 N9nbKTvEXjn5lYFtewBA148o1m3SKP4M/ZymUWiL67fk3yahX+Xv8FmvEH/oCt16LqV0 uBkmOeaDVun0Z+swzk6MFxKknv6bYM8sOCS0gQ6NFljewd0ks46/R7NP8R08IbFXlZxB S7iijDD/zbjEpGms70jDyv253AaHABH+3UphrKCyHJJdyP6bpun9b+tO4Gc+/F3mhUkf c+BQRT3JPePV2XGN7SEqL1OYNbqoXKyanyAjYlX9J32DEFL4P0/AW3mKcmcav1pz+IrI ELow== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1769185363; x=1769790163; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=jUm4PVJC35ODo4dBXeaCbuPGZ0/bE+N+0wlaMBGWiTc=; b=eNmBfeOISLmc63iD/Tsknhws1af/FKZN5yR1Aux+L45ILd6WOQHr4XHNhNWF0XSy83 EDsq4te/CcU/GmvkI4QwaDnXolu+3hhAgFR5/6rZ/C33x8MNcLVJCdpmoEABY1Ukq2Ga b9UXih8BStOcfA9dac31lKCOl3kUZDtODYE5D1QFdiWINVreUqdYUaWkz3SMedZFZSA3 vHR5aFUgQISbiEsYUdZm2ZMm3Vk6Iqns2yuWH0zmtP9rxDfrNFQxlYrX22RYWo5Sj8oF NJd1jon7GT7lCTNhevA8aFSKS3v7y6YKAdcUmgfbWdWUskc2jcyiiDkW0acverPc8C9b SHng== X-Forwarded-Encrypted: i=1; AJvYcCVhW3Xc3XJ0BZV8Uy0qugbba+WFpG61fxKtHLo5aJvinBXPShEO83unO6cLfNtswHiQcJPMmtCRsNo0Xcw=@vger.kernel.org X-Gm-Message-State: AOJu0YyvF087by1lxcuXNsIxPy+s2PFyN2k1NxthqHTf8iTW/Dt5o1AZ 6lK7czm9Atb/MWiRC/QxqzurDbmCw7W9rXINAunWtWHXOVkbWqnSBV4P X-Gm-Gg: AZuq6aJVPTt7cOKwTl46eYBWMWkP5zJFSiMtdEpqSRa5cENpa4au9Gsc+XoEVreMf4e fxlaz6Ah0gp7fVP8c2yW1ErLZ6H0FgpNSPNexDxkHcgIs//JoPs2kJPAOxgoeXpMiTcFjiXnKdF CJDjZ7mCnBuQ0Pd7Yka5cIo7LHmqmkEUvPIT8SA5IvNlKxZwwm4mNf5Cg9sTFDGpKZHybWt+f8j TRUwF5UzUUzXLy63y574l9qW1oPxyyJRfxZvnuqxTAbpThAH7sG9KEz4HNR/DoBGQWyO1/Iwgux rWhzEBShoGFqediLG/JaFLnypHdcBCA21SQt0v0fefPdMtR4QfcFtJ9kxHLpEpUIb7r9MgI2ljL WxvPlf8YRt6JsE5okoViMUZVaeHWXcpisyNs8TIUKpPAd0L7TUut/+EVVmUrD2utDZZd0bwnAIM Osk59xF/odtp9KP5SNpi/oydTTEXmeHp6cYsxHIRki1zOE0NXMECeROg== X-Received: by 2002:a17:90b:5690:b0:340:ec6f:5ac5 with SMTP id 98e67ed59e1d1-35366feb391mr2267086a91.2.1769185362417; Fri, 23 Jan 2026 08:22:42 -0800 (PST) Received: from d.home.mmyangfl.tk ([2001:19f0:8001:1644:5400:5ff:fe3e:12b1]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3536dc50882sm2496967a91.16.2026.01.23.08.22.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 23 Jan 2026 08:22:42 -0800 (PST) From: David Yang To: netdev@vger.kernel.org Cc: David Yang , Sabrina Dubroca , Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , linux-kernel@vger.kernel.org Subject: [PATCH net-next v2 5/7] macsec: fix memcpy with u64_stats Date: Sat, 24 Jan 2026 00:21:37 +0800 Message-ID: <20260123162159.2877941-6-mmyangfl@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260123162159.2877941-1-mmyangfl@gmail.com> References: <20260123162159.2877941-1-mmyangfl@gmail.com> 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. memcpy() should not be considered tear-free. Use u64_stats_reads() instead. Signed-off-by: David Yang --- drivers/net/macsec.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/net/macsec.c b/drivers/net/macsec.c index 5200fd5a10e5..533a64713ea7 100644 --- a/drivers/net/macsec.c +++ b/drivers/net/macsec.c @@ -2806,7 +2806,7 @@ static void get_rx_sc_stats(struct net_device *dev, stats =3D per_cpu_ptr(rx_sc->stats, cpu); do { start =3D u64_stats_fetch_begin(&stats->syncp); - memcpy(&tmp, &stats->stats, sizeof(tmp)); + u64_stats_reads(&tmp, &stats->stats, sizeof(tmp)); } while (u64_stats_fetch_retry(&stats->syncp, start)); =20 sum->InOctetsValidated +=3D tmp.InOctetsValidated; @@ -2887,7 +2887,7 @@ static void get_tx_sc_stats(struct net_device *dev, stats =3D per_cpu_ptr(macsec_priv(dev)->secy.tx_sc.stats, cpu); do { start =3D u64_stats_fetch_begin(&stats->syncp); - memcpy(&tmp, &stats->stats, sizeof(tmp)); + u64_stats_reads(&tmp, &stats->stats, sizeof(tmp)); } while (u64_stats_fetch_retry(&stats->syncp, start)); =20 sum->OutPktsProtected +=3D tmp.OutPktsProtected; @@ -2943,7 +2943,7 @@ static void get_secy_stats(struct net_device *dev, st= ruct macsec_dev_stats *sum) stats =3D per_cpu_ptr(macsec_priv(dev)->stats, cpu); do { start =3D u64_stats_fetch_begin(&stats->syncp); - memcpy(&tmp, &stats->stats, sizeof(tmp)); + u64_stats_reads(&tmp, &stats->stats, sizeof(tmp)); } while (u64_stats_fetch_retry(&stats->syncp, start)); =20 sum->OutPktsUntagged +=3D tmp.OutPktsUntagged; --=20 2.51.0 From nobody Sat Feb 7 08:44:18 2026 Received: from mail-pj1-f52.google.com (mail-pj1-f52.google.com [209.85.216.52]) (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 AE00030DD3B for ; Fri, 23 Jan 2026 16:22:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769185368; cv=none; b=a3bol02cDQxnWjsfECVBXvl7bRMXvu6VMY8GKIso6sy2CUO6ql6p3jO98h0RS9nBXWgTebSpWgl7JCV5UGGjOGTv7H03tZks+xKg+QQSQTfO8R2AW8jO+7Dw/gOYHA0GdeNvrqJsmkXGo8pYny15LAF3ExPtdWtbqKmpZXGKwB8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769185368; c=relaxed/simple; bh=Z8hEHgPPNhf/7h6ZdU08r+TLRxflZ2AGPEEFQtRD3U0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=rSqt8bso48XNEx8IEdkh0nNAx1zngSSXp8vvYLGO0K3gxkWbSy7ZJK1CmVdfCqVzrD9t7H8QtvRG6DgEVxdHrxB+3+GC1CwpTVJZelDUIjlBvTDJiz4nAe+K1L0f+jce7GWrLpCoECA2/ax5G9eFH2BtWpL4MeWFpe2J0s3eNfw= 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=Zdr6483s; arc=none smtp.client-ip=209.85.216.52 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="Zdr6483s" Received: by mail-pj1-f52.google.com with SMTP id 98e67ed59e1d1-34c868b197eso2261699a91.2 for ; Fri, 23 Jan 2026 08:22:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1769185367; x=1769790167; 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=OOf3NxBk19JWjxojhs/EHSzPKHmhtF1Po6inLk8Bjqs=; b=Zdr6483sDgfen89EKPyPzUpHwcu9IQMyyZkzPa26ltEuCLXl4F0aBZ7exmVYiCu7t/ 6vTEPn9VEFZvkeg/3Gadbam2vilnTpttIhdPaaF0T6+HStTYt+tY3l6E9PXFNq7jwatE BHnvybwoxV99fIvW0c+IotByXGuUu36Tqk4PyMbQOKqLXIWeO2n3N3+9jQYmtWqGR2Uq ZHb+SVRvtFDXbpfL1M0Y8ww2PBwX5JQrWtV4E89khJq7qn6ZBOTUx8gLqHZM3qJcF9bb 3hhD0rgv96Y2T6lHmb2dbmbx3WykpUB3XraktGpqUEqQx2PkwtacgESww4mlYDDcFV98 6uyQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1769185367; x=1769790167; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=OOf3NxBk19JWjxojhs/EHSzPKHmhtF1Po6inLk8Bjqs=; b=UB0rRtP4YI6Id1vaDHw6vKME8ndwN4S0xTKJ7N9SHzEXNLMOnCaGUtB47kqXmZ+CFr oU4AGLsvp2QwX+cefXXukbSasqUhjn4NW9Iw4y0WMrAYaO6i6cqwF9xTl2d/MOI2K/6o Tt78klBhvH1e71IvHsHBmayupC+J+7WXR+iV2VJay6waT3POty7+HEBwlS+h+sRxSnHP QCd7k5Cb8flQz6YO7r6j/oawRLggZ7Pv5rOoRbEY9LdVCJvUFIFwyGtepkef+vRTb4WQ vePa0Jn7Swr/WZaKYOiCRb+NNRq3xWZrLL9v3xXdMySUBudWyADBd5cHoR+4GDnnkeDr Z6pQ== X-Forwarded-Encrypted: i=1; AJvYcCUixnifoQGNTjXBefW2UesFirN1uWogodE9+ueiBz2z/fUkkreJvyGWZpEfqdSVeM5JeYLS9SrHnFktbL0=@vger.kernel.org X-Gm-Message-State: AOJu0YxaMUdNIdKFJTm6gZtWLqBzA6lFGIxdTLhFnkkJydfscLEBzPjx eYCKOz9nXXJ8pyCi2aS/KUgk70hDreEH1fa6J7q45fPkeZgUUVbqJdNpjb5hxA== X-Gm-Gg: AZuq6aLpqTYiXkdt7c2BF8Uk9SMFa/z1LCjShrdAmPfXQrzyyiqMEYSawqouLANFzBo +i80JYy0g1Z8T0bzkEADb0L5fTh0cG/1alAtFo7GgDjyyHYXicqnx5Ua5599Pa2R9NknGAr4R7K 9B+hexSopIiCaeuGpKrMPDoQl/VBYKeaU6sw/sBWuqk/kYlgxlH5a+dUpZbKkHHmQ/Em2COiiYe 9UN9QcZbw8VBGvtbxikW06PMRGgPGJWNPI47qGZawqPRHKwKy4gh3w0sokO8vFYl4/mIcxq1Nq1 He+wS/3s9WyyFl4KO8qBHINhtzkZ0CVTdHnmo2vIZ5uLd3PnkAK2JKtu4eNjezy/n9HZbJtzWR+ NOVG0pGP0SMR+MglfXrrx6FXpbjQsybXe1wIG4NtK/yeVO6wmdVLWDfridBlvIsBo+9RgSNAbNC 3NbjbkffqK4gFhYKeXEzSFvhPcZ6Req9gu8d9Enm6eK5bEwYOBdpotYsJ9y2b+S7+O X-Received: by 2002:a17:90b:4b0d:b0:353:3934:1449 with SMTP id 98e67ed59e1d1-35367031e8cmr3216513a91.12.1769185366646; Fri, 23 Jan 2026 08:22:46 -0800 (PST) Received: from d.home.mmyangfl.tk ([2001:19f0:8001:1644:5400:5ff:fe3e:12b1]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3536dc50882sm2496967a91.16.2026.01.23.08.22.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 23 Jan 2026 08:22:46 -0800 (PST) From: David Yang To: netdev@vger.kernel.org Cc: David Yang , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Kuniyuki Iwashima , Guillaume Nault , Breno Leitao , Stanislav Fomichev , linux-kernel@vger.kernel.org Subject: [PATCH net-next v2 6/7] mpls: Fix load tearing with u64_stats Date: Sat, 24 Jan 2026 00:21:38 +0800 Message-ID: <20260123162159.2877941-7-mmyangfl@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260123162159.2877941-1-mmyangfl@gmail.com> References: <20260123162159.2877941-1-mmyangfl@gmail.com> 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. struct copying should not be considered tear-free. Use u64_stats_reads() instead. Signed-off-by: David Yang --- net/mpls/af_mpls.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/net/mpls/af_mpls.c b/net/mpls/af_mpls.c index 580aac112dd2..bd2e02b89d09 100644 --- a/net/mpls/af_mpls.c +++ b/net/mpls/af_mpls.c @@ -1097,7 +1097,7 @@ static void mpls_get_stats(struct mpls_dev *mdev, p =3D per_cpu_ptr(mdev->stats, i); do { start =3D u64_stats_fetch_begin(&p->syncp); - local =3D p->stats; + u64_stats_reads(&local, &p->stats, sizeof(local)); } while (u64_stats_fetch_retry(&p->syncp, start)); =20 stats->rx_packets +=3D local.rx_packets; --=20 2.51.0 From nobody Sat Feb 7 08:44:18 2026 Received: from mail-pg1-f173.google.com (mail-pg1-f173.google.com [209.85.215.173]) (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 05AAF2F83AC for ; Fri, 23 Jan 2026 16:22:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.173 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769185373; cv=none; b=I1vfvT2DSj/3syhd9KVtga+7lyRvvAN+s+BJASt9bmB215qnevwE4Cm3rIFI7D//VX8eZ7HlZADobJJWxznc1OX+HzMaGDCzjp9XHqF8RQTNqnPpGzm2Cz00jsud5iglAzHN27LeewDfmUp0Iuhx20dGAYUaX/7iGSpgMnGC07Q= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769185373; c=relaxed/simple; bh=VrAPEl39e9anIsEe4zCu0gxxfqGtmKVF9Grnf8Bfcdo=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=CaH9/KM5UW1svhQLdEMe1coTDilpFJZq5gSqBfjKde7ogm0jy1RRpo/gteGDGKutji125OmAxSk1Ly8TbicgKNWJ69IK+quLvAxgzB7rpZvWXNwmABjVUU4E+P4L0jFPbVGcNiYgnUj+s30SebrT/YY0m3KPXqVsOQguHV0IaGI= 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=T/AliVKM; arc=none smtp.client-ip=209.85.215.173 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="T/AliVKM" Received: by mail-pg1-f173.google.com with SMTP id 41be03b00d2f7-c5e051a47ddso1575356a12.1 for ; Fri, 23 Jan 2026 08:22:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1769185371; x=1769790171; 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=Y7TW7msSZ+2wc4dxwFxb0UJCP9LbS8qQBJKa9dBUSTc=; b=T/AliVKMImlRWcVBrgVMRaF55p4gs82eul1yEUE21APtiXJTAFsvCt2DtDtDaZnuQI F33Oz5/zUrFS4CdYXS5r8zwK0SdDNu7c1U2qQyZ+GtwwLoUm3W6sY1Sve6w1A9XHvFrX pysIUjfHhoetNdCmzsvRRr1FJ7z7B9S8HnFz1MlugzH4Rvj2hiaX9uP7NPD3tvk+Vm+a /w19kH4ysDmH/qm2COuLK+0+R0uV5XV68y5FHU5Cmrv5WajjquJFb4ULRNDX3y7O3710 1Zp8fqSRtvMkjFtM1anoZ+4DY/QumFqLbXN42yO7OuFcNwUyDJkrXhlkbuCQ+Ds2ipVd 0RCw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1769185371; x=1769790171; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=Y7TW7msSZ+2wc4dxwFxb0UJCP9LbS8qQBJKa9dBUSTc=; b=G9F2m9Pnfxlmdygj0221Wv4hQ4hU6xfeb8U2kWrVY4E4ArsdnGaSepd1FJqpkypQJu MxzSaTw67iMN2hDuxq7YC2poqG7cJUQDnCvV7FnaTsUmz/fMOv3rh2v8hFDlRnKqgs90 QyqgPJPSj9v1EHHooQqeOpkpiCOkqcgvVqGcrRte6P5uZKWtiwcrwNQBN0VGMe9YAG0X G2VH+2MpXyemOUzbcg2nFdgiurRRQEDwJ2TyUTUbOlJ9/0ktePnEy6u87D/lqbP0wLmF Zmrc9wAS8kWHEiWzpuchx58u4ycaOlwMZ+Me/+SmydqZ3YPmuILbkevd4kQvwC2tcXah sfoQ== X-Forwarded-Encrypted: i=1; AJvYcCXz0zwOKxnzXhrItgreffkBo8PTwd+NevCtYy97vV4qPMkWCwTeIPVuiUJdd1uOKlPTWhavS7QVq+Nxc8M=@vger.kernel.org X-Gm-Message-State: AOJu0Yyg1HD0Xs8zitF3SwVxWYMjjANAKMkcy2ZYr4KDzDesqfkBqkHO VywfbFepmELQJPyZoS0ztMbeGeMUPPajKCCk0O1DENamz2ojDacJKYZY X-Gm-Gg: AZuq6aKwhlp7do1G7/Ch0YQtaeZkw8RRtIQvYULsjRICPgl6uzafAX+jGe8NhiT4CjP 2k8MmJlbk4iAUSGYPDXP6JZuSlBNDCnmOnvk6MdaXWdHrFx2wzQXTow+0R4+aqbP6AZ01PCEzik JFkb43BhvrzHMREgOP10K8Wiei39GvV/tJL0AahykLhhyJgJVHqoMBPEAgH2z0kDr93JGSb09pL Yf1AnK5G5D4zkOUHSll28qMv2Ijg0/BGblPCy0X5niJMOHMnqTFyyxP0OYJZ+YUkbocUjYm3gO8 TdFj4IpbtnEj12zM4gjoBpG1UzOlarFPmCUX6VtqulzxSXAE+8U2nMZMSn98jt/tMm4CMYQ6HtL BMtr1OrFmQBp3yCiTGT5JzBi8bP80KNnWWLi1qAbQQ523oPH9J23DscbBl1fcdQSPDl7cV/6Zo/ w/71KlANJAHvDJRg1tqte+OGIborJHt/P2jmOfgNAx9dZZlXMcEnNZ4w== X-Received: by 2002:a17:90b:57e3:b0:352:c410:35ca with SMTP id 98e67ed59e1d1-3536700c58dmr3245949a91.7.1769185371223; Fri, 23 Jan 2026 08:22:51 -0800 (PST) Received: from d.home.mmyangfl.tk ([2001:19f0:8001:1644:5400:5ff:fe3e:12b1]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3536dc50882sm2496967a91.16.2026.01.23.08.22.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 23 Jan 2026 08:22:50 -0800 (PST) From: David Yang To: netdev@vger.kernel.org Cc: David Yang , Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Ido Schimmel , Nikolay Aleksandrov , Breno Leitao , Stanislav Fomichev , Shigeru Yoshida , Carolina Jubran , linux-kernel@vger.kernel.org Subject: [PATCH net-next v2 7/7] vxlan: vnifilter: fix memcpy with u64_stats Date: Sat, 24 Jan 2026 00:21:39 +0800 Message-ID: <20260123162159.2877941-8-mmyangfl@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260123162159.2877941-1-mmyangfl@gmail.com> References: <20260123162159.2877941-1-mmyangfl@gmail.com> 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. memcpy() should not be considered tear-free. Use u64_stats_reads() instead. Signed-off-by: David Yang --- drivers/net/vxlan/vxlan_vnifilter.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/vxlan/vxlan_vnifilter.c b/drivers/net/vxlan/vxlan_= vnifilter.c index adc89e651e27..afd5df154376 100644 --- a/drivers/net/vxlan/vxlan_vnifilter.c +++ b/drivers/net/vxlan/vxlan_vnifilter.c @@ -126,7 +126,7 @@ static void vxlan_vnifilter_stats_get(const struct vxla= n_vni_node *vninode, pstats =3D per_cpu_ptr(vninode->stats, i); do { start =3D u64_stats_fetch_begin(&pstats->syncp); - memcpy(&temp, &pstats->stats, sizeof(temp)); + u64_stats_reads(&temp, &pstats->stats, sizeof(temp)); } while (u64_stats_fetch_retry(&pstats->syncp, start)); =20 dest->rx_packets +=3D temp.rx_packets; --=20 2.51.0