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) |