[PATCH 10/11] 8021q: publish vlan_devices_arrays entries with acquire/release

From: Jinjie Ruan

Date: Tue Aug 25 2026 - 06:01:24 EST


Replace the smp_wmb()/smp_rmb() barrier pair with
smp_store_release()/smp_load_acquire() on
vg->vlan_devices_arrays[pidx][vidx].

vlan_group_prealloc_vid() publishes the array pointer via release;
__vlan_group_get_device() acquires it before accessing the array,
ensuring the allocated entries are visible.

No functional change intended.

Assisted-by: DeepSeek:DeepSeek-V3
Signed-off-by: Jinjie Ruan <ruanjinjie@xxxxxxxxxx>
---
net/8021q/vlan.c | 6 ++----
net/8021q/vlan.h | 8 +++-----
2 files changed, 5 insertions(+), 9 deletions(-)

diff --git a/net/8021q/vlan.c b/net/8021q/vlan.c
index 2d2efb877975..e34ada0cceac 100644
--- a/net/8021q/vlan.c
+++ b/net/8021q/vlan.c
@@ -70,10 +70,8 @@ static int vlan_group_prealloc_vid(struct vlan_group *vg,
if (array == NULL)
return -ENOBUFS;

- /* paired with smp_rmb() in __vlan_group_get_device() */
- smp_wmb();
-
- vg->vlan_devices_arrays[pidx][vidx] = array;
+ /* paired with smp_load_acquire() in __vlan_group_get_device() */
+ smp_store_release(&vg->vlan_devices_arrays[pidx][vidx], array);
return 0;
}

diff --git a/net/8021q/vlan.h b/net/8021q/vlan.h
index c41caaf94095..6db7172bdaac 100644
--- a/net/8021q/vlan.h
+++ b/net/8021q/vlan.h
@@ -56,11 +56,9 @@ static inline struct net_device *__vlan_group_get_device(struct vlan_group *vg,
{
struct net_device **array;

- array = vg->vlan_devices_arrays[pidx]
- [vlan_id / VLAN_GROUP_ARRAY_PART_LEN];
-
- /* paired with smp_wmb() in vlan_group_prealloc_vid() */
- smp_rmb();
+ /* Pairs with smp_store_release() in vlan_group_prealloc_vid() */
+ array = smp_load_acquire(&vg->vlan_devices_arrays[pidx]
+ [vlan_id / VLAN_GROUP_ARRAY_PART_LEN]);

return array ? array[vlan_id % VLAN_GROUP_ARRAY_PART_LEN] : NULL;
}
--
2.34.1