bpf: Refactor kptr_off_tab into btf_record
[linux-2.6-microblaze.git] / kernel / bpf / arraymap.c
index 832b265..417f843 100644 (file)
@@ -310,8 +310,7 @@ static void check_and_free_fields(struct bpf_array *arr, void *val)
 {
        if (map_value_has_timer(&arr->map))
                bpf_timer_cancel_and_free(val + arr->map.timer_off);
-       if (map_value_has_kptrs(&arr->map))
-               bpf_map_free_kptrs(&arr->map, val);
+       bpf_obj_free_fields(arr->map.record, val);
 }
 
 /* Called from syscall or from eBPF program */
@@ -409,7 +408,7 @@ static void array_map_free_timers(struct bpf_map *map)
        struct bpf_array *array = container_of(map, struct bpf_array, map);
        int i;
 
-       /* We don't reset or free kptr on uref dropping to zero. */
+       /* We don't reset or free fields other than timer on uref dropping to zero. */
        if (!map_value_has_timer(map))
                return;
 
@@ -423,22 +422,22 @@ static void array_map_free(struct bpf_map *map)
        struct bpf_array *array = container_of(map, struct bpf_array, map);
        int i;
 
-       if (map_value_has_kptrs(map)) {
+       if (!IS_ERR_OR_NULL(map->record)) {
                if (array->map.map_type == BPF_MAP_TYPE_PERCPU_ARRAY) {
                        for (i = 0; i < array->map.max_entries; i++) {
                                void __percpu *pptr = array->pptrs[i & array->index_mask];
                                int cpu;
 
                                for_each_possible_cpu(cpu) {
-                                       bpf_map_free_kptrs(map, per_cpu_ptr(pptr, cpu));
+                                       bpf_obj_free_fields(map->record, per_cpu_ptr(pptr, cpu));
                                        cond_resched();
                                }
                        }
                } else {
                        for (i = 0; i < array->map.max_entries; i++)
-                               bpf_map_free_kptrs(map, array_map_elem_ptr(array, i));
+                               bpf_obj_free_fields(map->record, array_map_elem_ptr(array, i));
                }
-               bpf_map_free_kptr_off_tab(map);
+               bpf_map_free_record(map);
        }
 
        if (array->map.map_type == BPF_MAP_TYPE_PERCPU_ARRAY)