File tree Expand file tree Collapse file tree 8 files changed +17
-40
lines changed Expand file tree Collapse file tree 8 files changed +17
-40
lines changed Original file line number Diff line number Diff line change @@ -378,6 +378,7 @@ void bpf_map_put(struct bpf_map *map);
378
378
int bpf_map_precharge_memlock (u32 pages );
379
379
void * bpf_map_area_alloc (size_t size , int numa_node );
380
380
void bpf_map_area_free (void * base );
381
+ void bpf_map_init_from_attr (struct bpf_map * map , union bpf_attr * attr );
381
382
382
383
extern int sysctl_unprivileged_bpf_disabled ;
383
384
Original file line number Diff line number Diff line change @@ -94,13 +94,7 @@ static struct bpf_map *cpu_map_alloc(union bpf_attr *attr)
94
94
if (!cmap )
95
95
return ERR_PTR (- ENOMEM );
96
96
97
- /* mandatory map attributes */
98
- cmap -> map .map_type = attr -> map_type ;
99
- cmap -> map .key_size = attr -> key_size ;
100
- cmap -> map .value_size = attr -> value_size ;
101
- cmap -> map .max_entries = attr -> max_entries ;
102
- cmap -> map .map_flags = attr -> map_flags ;
103
- cmap -> map .numa_node = bpf_map_attr_numa_node (attr );
97
+ bpf_map_init_from_attr (& cmap -> map , attr );
104
98
105
99
/* Pre-limit array size based on NR_CPUS, not final CPU check */
106
100
if (cmap -> map .max_entries > NR_CPUS ) {
Original file line number Diff line number Diff line change @@ -93,13 +93,7 @@ static struct bpf_map *dev_map_alloc(union bpf_attr *attr)
93
93
if (!dtab )
94
94
return ERR_PTR (- ENOMEM );
95
95
96
- /* mandatory map attributes */
97
- dtab -> map .map_type = attr -> map_type ;
98
- dtab -> map .key_size = attr -> key_size ;
99
- dtab -> map .value_size = attr -> value_size ;
100
- dtab -> map .max_entries = attr -> max_entries ;
101
- dtab -> map .map_flags = attr -> map_flags ;
102
- dtab -> map .numa_node = bpf_map_attr_numa_node (attr );
96
+ bpf_map_init_from_attr (& dtab -> map , attr );
103
97
104
98
/* make sure page count doesn't overflow */
105
99
cost = (u64 ) dtab -> map .max_entries * sizeof (struct bpf_dtab_netdev * );
Original file line number Diff line number Diff line change @@ -304,7 +304,6 @@ static struct bpf_map *htab_map_alloc(union bpf_attr *attr)
304
304
*/
305
305
bool percpu_lru = (attr -> map_flags & BPF_F_NO_COMMON_LRU );
306
306
bool prealloc = !(attr -> map_flags & BPF_F_NO_PREALLOC );
307
- int numa_node = bpf_map_attr_numa_node (attr );
308
307
struct bpf_htab * htab ;
309
308
int err , i ;
310
309
u64 cost ;
@@ -313,13 +312,7 @@ static struct bpf_map *htab_map_alloc(union bpf_attr *attr)
313
312
if (!htab )
314
313
return ERR_PTR (- ENOMEM );
315
314
316
- /* mandatory map attributes */
317
- htab -> map .map_type = attr -> map_type ;
318
- htab -> map .key_size = attr -> key_size ;
319
- htab -> map .value_size = attr -> value_size ;
320
- htab -> map .max_entries = attr -> max_entries ;
321
- htab -> map .map_flags = attr -> map_flags ;
322
- htab -> map .numa_node = numa_node ;
315
+ bpf_map_init_from_attr (& htab -> map , attr );
323
316
324
317
if (percpu_lru ) {
325
318
/* ensure each CPU's lru list has >=1 elements.
Original file line number Diff line number Diff line change @@ -522,12 +522,7 @@ static struct bpf_map *trie_alloc(union bpf_attr *attr)
522
522
return ERR_PTR (- ENOMEM );
523
523
524
524
/* copy mandatory map attributes */
525
- trie -> map .map_type = attr -> map_type ;
526
- trie -> map .key_size = attr -> key_size ;
527
- trie -> map .value_size = attr -> value_size ;
528
- trie -> map .max_entries = attr -> max_entries ;
529
- trie -> map .map_flags = attr -> map_flags ;
530
- trie -> map .numa_node = bpf_map_attr_numa_node (attr );
525
+ bpf_map_init_from_attr (& trie -> map , attr );
531
526
trie -> data_size = attr -> key_size -
532
527
offsetof(struct bpf_lpm_trie_key , data );
533
528
trie -> max_prefixlen = trie -> data_size * 8 ;
Original file line number Diff line number Diff line change @@ -513,13 +513,7 @@ static struct bpf_map *sock_map_alloc(union bpf_attr *attr)
513
513
if (!stab )
514
514
return ERR_PTR (- ENOMEM );
515
515
516
- /* mandatory map attributes */
517
- stab -> map .map_type = attr -> map_type ;
518
- stab -> map .key_size = attr -> key_size ;
519
- stab -> map .value_size = attr -> value_size ;
520
- stab -> map .max_entries = attr -> max_entries ;
521
- stab -> map .map_flags = attr -> map_flags ;
522
- stab -> map .numa_node = bpf_map_attr_numa_node (attr );
516
+ bpf_map_init_from_attr (& stab -> map , attr );
523
517
524
518
/* make sure page count doesn't overflow */
525
519
cost = (u64 ) stab -> map .max_entries * sizeof (struct sock * );
Original file line number Diff line number Diff line change @@ -88,14 +88,10 @@ static struct bpf_map *stack_map_alloc(union bpf_attr *attr)
88
88
if (cost >= U32_MAX - PAGE_SIZE )
89
89
goto free_smap ;
90
90
91
- smap -> map .map_type = attr -> map_type ;
92
- smap -> map .key_size = attr -> key_size ;
91
+ bpf_map_init_from_attr (& smap -> map , attr );
93
92
smap -> map .value_size = value_size ;
94
- smap -> map .max_entries = attr -> max_entries ;
95
- smap -> map .map_flags = attr -> map_flags ;
96
93
smap -> n_buckets = n_buckets ;
97
94
smap -> map .pages = round_up (cost , PAGE_SIZE ) >> PAGE_SHIFT ;
98
- smap -> map .numa_node = bpf_map_attr_numa_node (attr );
99
95
100
96
err = bpf_map_precharge_memlock (smap -> map .pages );
101
97
if (err )
Original file line number Diff line number Diff line change @@ -143,6 +143,16 @@ void bpf_map_area_free(void *area)
143
143
kvfree (area );
144
144
}
145
145
146
+ void bpf_map_init_from_attr (struct bpf_map * map , union bpf_attr * attr )
147
+ {
148
+ map -> map_type = attr -> map_type ;
149
+ map -> key_size = attr -> key_size ;
150
+ map -> value_size = attr -> value_size ;
151
+ map -> max_entries = attr -> max_entries ;
152
+ map -> map_flags = attr -> map_flags ;
153
+ map -> numa_node = bpf_map_attr_numa_node (attr );
154
+ }
155
+
146
156
int bpf_map_precharge_memlock (u32 pages )
147
157
{
148
158
struct user_struct * user = get_current_user ();
You can’t perform that action at this time.
0 commit comments