summaryrefslogtreecommitdiffstats
path: root/kernel/bpf/syscall.c
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2019-02-08 18:00:17 -0500
committerDavid S. Miller <davem@davemloft.net>2019-02-08 18:00:17 -0500
commita655fe9f194842693258f43b5382855db1c2f654 (patch)
treea6e523c42378f43881c421530941dcbb529461ab /kernel/bpf/syscall.c
parent7499a288bf1a4a49be9d72beb0a5c7b9aa6ffec9 (diff)
parent27b4ad621e887ce8e5eb508a0103f13d30f6b38a (diff)
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
An ipvlan bug fix in 'net' conflicted with the abstraction away of the IPV6 specific support in 'net-next'. Similarly, a bug fix for mlx5 in 'net' conflicted with the flow action conversion in 'net-next'. Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'kernel/bpf/syscall.c')
-rw-r--r--kernel/bpf/syscall.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/kernel/bpf/syscall.c b/kernel/bpf/syscall.c
index 0834958f1dc4..ec7c552af76b 100644
--- a/kernel/bpf/syscall.c
+++ b/kernel/bpf/syscall.c
@@ -740,8 +740,13 @@ static int map_lookup_elem(union bpf_attr *attr)
740 740
741 if (bpf_map_is_dev_bound(map)) { 741 if (bpf_map_is_dev_bound(map)) {
742 err = bpf_map_offload_lookup_elem(map, key, value); 742 err = bpf_map_offload_lookup_elem(map, key, value);
743 } else if (map->map_type == BPF_MAP_TYPE_PERCPU_HASH || 743 goto done;
744 map->map_type == BPF_MAP_TYPE_LRU_PERCPU_HASH) { 744 }
745
746 preempt_disable();
747 this_cpu_inc(bpf_prog_active);
748 if (map->map_type == BPF_MAP_TYPE_PERCPU_HASH ||
749 map->map_type == BPF_MAP_TYPE_LRU_PERCPU_HASH) {
745 err = bpf_percpu_hash_copy(map, key, value); 750 err = bpf_percpu_hash_copy(map, key, value);
746 } else if (map->map_type == BPF_MAP_TYPE_PERCPU_ARRAY) { 751 } else if (map->map_type == BPF_MAP_TYPE_PERCPU_ARRAY) {
747 err = bpf_percpu_array_copy(map, key, value); 752 err = bpf_percpu_array_copy(map, key, value);
@@ -777,7 +782,10 @@ static int map_lookup_elem(union bpf_attr *attr)
777 } 782 }
778 rcu_read_unlock(); 783 rcu_read_unlock();
779 } 784 }
785 this_cpu_dec(bpf_prog_active);
786 preempt_enable();
780 787
788done:
781 if (err) 789 if (err)
782 goto free_value; 790 goto free_value;
783 791