From: Jakub Kicinski <kuba@kernel.org>
To: davem@davemloft.net
Cc: netdev@vger.kernel.org, edumazet@google.com, pabeni@redhat.com,
andrew+netdev@lunn.ch, horms@kernel.org, shuah@kernel.org,
linux-kselftest@vger.kernel.org, Jakub Kicinski <kuba@kernel.org>
Subject: [PATCH net 03/12] net: shaper: fix trivial ordering issue in net_shaper_commit()
Date: Tue, 5 May 2026 17:06:19 -0700 [thread overview]
Message-ID: <20260506000628.1501691-4-kuba@kernel.org> (raw)
In-Reply-To: <20260506000628.1501691-1-kuba@kernel.org>
We should update the entry before we mark it as valid.
Fixes: 93954b40f6a4 ("net-shapers: implement NL set and delete operations")
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
---
net/shaper/shaper.c | 11 ++++++++++-
1 file changed, 10 insertions(+), 1 deletion(-)
diff --git a/net/shaper/shaper.c b/net/shaper/shaper.c
index c5cf10543af0..692e38df42cb 100644
--- a/net/shaper/shaper.c
+++ b/net/shaper/shaper.c
@@ -295,6 +295,10 @@ net_shaper_lookup(struct net_shaper_binding *binding,
NET_SHAPER_VALID))
return NULL;
+ /* Pairs with smp_wmb() in net_shaper_commit(): if the entry is
+ * valid, its contents must be visible too.
+ */
+ smp_rmb();
return xa_load(&hierarchy->shapers, index);
}
@@ -411,8 +415,9 @@ static void net_shaper_commit(struct net_shaper_binding *binding,
/* Successful update: drop the tentative mark
* and update the hierarchy container.
*/
- xa_set_mark(&hierarchy->shapers, index, NET_SHAPER_VALID);
*cur = shapers[i];
+ smp_wmb();
+ xa_set_mark(&hierarchy->shapers, index, NET_SHAPER_VALID);
}
}
@@ -833,6 +838,10 @@ int net_shaper_nl_get_dumpit(struct sk_buff *skb,
for (; (shaper = xa_find(&hierarchy->shapers, &ctx->start_index,
U32_MAX, NET_SHAPER_VALID));
ctx->start_index++) {
+ /* Pairs with smp_wmb() in net_shaper_commit(): the entry
+ * is marked VALID, so its contents must be visible too.
+ */
+ smp_rmb();
ret = net_shaper_fill_one(skb, binding, shaper, info);
if (ret)
break;
--
2.54.0
next prev parent reply other threads:[~2026-05-06 0:06 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-05-06 0:06 [PATCH net 00/12] net: shaper: fix various minor bugs Jakub Kicinski
2026-05-06 0:06 ` [PATCH net 01/12] net: shaper: drop redundant xa_lock() bracketing Jakub Kicinski
2026-05-06 15:30 ` Paolo Abeni
2026-05-06 22:33 ` Jakub Kicinski
2026-05-07 7:10 ` Paolo Abeni
2026-05-06 0:06 ` [PATCH net 02/12] net: shaper: flip the polarity of the valid flag Jakub Kicinski
2026-05-06 0:06 ` Jakub Kicinski [this message]
2026-05-06 0:06 ` [PATCH net 04/12] net: shaper: try to avoid violating RCU Jakub Kicinski
2026-05-06 15:22 ` Paolo Abeni
2026-05-06 15:32 ` Paolo Abeni
2026-05-06 22:35 ` Jakub Kicinski
2026-05-06 0:06 ` [PATCH net 05/12] net: shaper: reject duplicate leaves in GROUP request Jakub Kicinski
2026-05-06 0:06 ` [PATCH net 06/12] selftests: drv-net: add shaper test for duplicate leaves Jakub Kicinski
2026-05-06 16:40 ` Breno Leitao
2026-05-06 22:35 ` Jakub Kicinski
2026-05-06 0:06 ` [PATCH net 07/12] net: shaper: set ret to -ENOMEM when genlmsg_new() fails in group_doit Jakub Kicinski
2026-05-06 0:06 ` [PATCH net 08/12] net: shaper: fix undersized reply skb allocation in GROUP command Jakub Kicinski
2026-05-06 0:06 ` [PATCH net 09/12] tools: ynl: add scope qualifier for definitions Jakub Kicinski
2026-05-06 2:32 ` Jakub Kicinski
2026-05-06 0:06 ` [PATCH net 10/12] net: shaper: reject handle IDs exceeding internal bit-width Jakub Kicinski
2026-05-06 0:06 ` [PATCH net 11/12] net: shaper: enforce singleton NETDEV scope with id 0 Jakub Kicinski
2026-05-06 0:06 ` [PATCH net 12/12] net: shaper: reject QUEUE scope handle with missing id Jakub Kicinski
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260506000628.1501691-4-kuba@kernel.org \
--to=kuba@kernel.org \
--cc=andrew+netdev@lunn.ch \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=horms@kernel.org \
--cc=linux-kselftest@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=shuah@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.