diff options
Diffstat (limited to 'kernel/bpf/devmap.c')
| -rw-r--r-- | kernel/bpf/devmap.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/kernel/bpf/devmap.c b/kernel/bpf/devmap.c index 959c9a07f318..e093d9a2c4dd 100644 --- a/kernel/bpf/devmap.c +++ b/kernel/bpf/devmap.c | |||
| @@ -75,8 +75,8 @@ static u64 dev_map_bitmap_size(const union bpf_attr *attr) | |||
| 75 | static struct bpf_map *dev_map_alloc(union bpf_attr *attr) | 75 | static struct bpf_map *dev_map_alloc(union bpf_attr *attr) |
| 76 | { | 76 | { |
| 77 | struct bpf_dtab *dtab; | 77 | struct bpf_dtab *dtab; |
| 78 | int err = -EINVAL; | ||
| 78 | u64 cost; | 79 | u64 cost; |
| 79 | int err; | ||
| 80 | 80 | ||
| 81 | /* check sanity of attributes */ | 81 | /* check sanity of attributes */ |
| 82 | if (attr->max_entries == 0 || attr->key_size != 4 || | 82 | if (attr->max_entries == 0 || attr->key_size != 4 || |
| @@ -108,6 +108,8 @@ static struct bpf_map *dev_map_alloc(union bpf_attr *attr) | |||
| 108 | if (err) | 108 | if (err) |
| 109 | goto free_dtab; | 109 | goto free_dtab; |
| 110 | 110 | ||
| 111 | err = -ENOMEM; | ||
| 112 | |||
| 111 | /* A per cpu bitfield with a bit per possible net device */ | 113 | /* A per cpu bitfield with a bit per possible net device */ |
| 112 | dtab->flush_needed = __alloc_percpu(dev_map_bitmap_size(attr), | 114 | dtab->flush_needed = __alloc_percpu(dev_map_bitmap_size(attr), |
| 113 | __alignof__(unsigned long)); | 115 | __alignof__(unsigned long)); |
| @@ -128,7 +130,7 @@ static struct bpf_map *dev_map_alloc(union bpf_attr *attr) | |||
| 128 | free_dtab: | 130 | free_dtab: |
| 129 | free_percpu(dtab->flush_needed); | 131 | free_percpu(dtab->flush_needed); |
| 130 | kfree(dtab); | 132 | kfree(dtab); |
| 131 | return ERR_PTR(-ENOMEM); | 133 | return ERR_PTR(err); |
| 132 | } | 134 | } |
| 133 | 135 | ||
| 134 | static void dev_map_free(struct bpf_map *map) | 136 | static void dev_map_free(struct bpf_map *map) |
