summaryrefslogtreecommitdiff
path: root/kernel/bpf/arraymap.c
diff options
context:
space:
mode:
authorMark Brown <broonie@kernel.org>2026-10-08 14:41:27 +0200
committerMark Brown <broonie@kernel.org>2026-10-08 14:41:27 +0200
commit9f19c8a019d7c1fb720133ca86154be1ccff39b5 (patch)
treea7c9d53fd675abff61a63352822a3939171ad6aa /kernel/bpf/arraymap.c
parent2597b3f0a0e46069ffd754112b2bd33406fb6eec (diff)
parentf52260f49b107fddbcf7c75f9cf2347a5031f0f7 (diff)
downloadlinux-next-9f19c8a019d7c1fb720133ca86154be1ccff39b5.tar.gz
linux-next-9f19c8a019d7c1fb720133ca86154be1ccff39b5.zip
Merge regmap/for-7.4 into regmap-next
Diffstat (limited to 'kernel/bpf/arraymap.c')
-rw-r--r--kernel/bpf/arraymap.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/kernel/bpf/arraymap.c b/kernel/bpf/arraymap.c
index ef315b168b29..0ce26b538075 100644
--- a/kernel/bpf/arraymap.c
+++ b/kernel/bpf/arraymap.c
@@ -436,7 +436,7 @@ int bpf_percpu_array_update(struct bpf_map *map, void *key, void *value,
void __percpu *pptr;
void *ptr, *val;
u32 size;
- int cpu;
+ int cpu, off = 0;
if (unlikely((map_flags & BPF_F_LOCK) || (u32)map_flags > BPF_F_ALL_CPUS))
/* unknown flags */
@@ -468,9 +468,10 @@ int bpf_percpu_array_update(struct bpf_map *map, void *key, void *value,
}
for_each_possible_cpu(cpu) {
ptr = per_cpu_ptr(pptr, cpu);
- val = (map_flags & BPF_F_ALL_CPUS) ? value : value + size * cpu;
+ val = (map_flags & BPF_F_ALL_CPUS) ? value : value + off;
copy_map_value(map, ptr, val);
bpf_obj_cancel_fields(map, ptr);
+ off += size;
}
unlock:
rcu_read_unlock();