diff options
Diffstat (limited to 'kernel/bpf/stackmap.c')
-rw-r--r-- | kernel/bpf/stackmap.c | 13 |
1 files changed, 5 insertions, 8 deletions
diff --git a/kernel/bpf/stackmap.c b/kernel/bpf/stackmap.c index 57eeb1234b67..04f6ec1679f0 100644 --- a/kernel/bpf/stackmap.c +++ b/kernel/bpf/stackmap.c | |||
@@ -262,16 +262,11 @@ out: | |||
262 | return ret; | 262 | return ret; |
263 | } | 263 | } |
264 | 264 | ||
265 | static void stack_map_get_build_id_offset(struct bpf_map *map, | 265 | static void stack_map_get_build_id_offset(struct bpf_stack_build_id *id_offs, |
266 | struct stack_map_bucket *bucket, | ||
267 | u64 *ips, u32 trace_nr, bool user) | 266 | u64 *ips, u32 trace_nr, bool user) |
268 | { | 267 | { |
269 | int i; | 268 | int i; |
270 | struct vm_area_struct *vma; | 269 | struct vm_area_struct *vma; |
271 | struct bpf_stack_build_id *id_offs; | ||
272 | |||
273 | bucket->nr = trace_nr; | ||
274 | id_offs = (struct bpf_stack_build_id *)bucket->data; | ||
275 | 270 | ||
276 | /* | 271 | /* |
277 | * We cannot do up_read() in nmi context, so build_id lookup is | 272 | * We cannot do up_read() in nmi context, so build_id lookup is |
@@ -361,8 +356,10 @@ BPF_CALL_3(bpf_get_stackid, struct pt_regs *, regs, struct bpf_map *, map, | |||
361 | pcpu_freelist_pop(&smap->freelist); | 356 | pcpu_freelist_pop(&smap->freelist); |
362 | if (unlikely(!new_bucket)) | 357 | if (unlikely(!new_bucket)) |
363 | return -ENOMEM; | 358 | return -ENOMEM; |
364 | stack_map_get_build_id_offset(map, new_bucket, ips, | 359 | new_bucket->nr = trace_nr; |
365 | trace_nr, user); | 360 | stack_map_get_build_id_offset( |
361 | (struct bpf_stack_build_id *)new_bucket->data, | ||
362 | ips, trace_nr, user); | ||
366 | trace_len = trace_nr * sizeof(struct bpf_stack_build_id); | 363 | trace_len = trace_nr * sizeof(struct bpf_stack_build_id); |
367 | if (hash_matches && bucket->nr == trace_nr && | 364 | if (hash_matches && bucket->nr == trace_nr && |
368 | memcmp(bucket->data, new_bucket->data, trace_len) == 0) { | 365 | memcmp(bucket->data, new_bucket->data, trace_len) == 0) { |