diff options
author | David S. Miller <davem@davemloft.net> | 2019-02-08 18:00:17 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2019-02-08 18:00:17 -0500 |
commit | a655fe9f194842693258f43b5382855db1c2f654 (patch) | |
tree | a6e523c42378f43881c421530941dcbb529461ab /kernel/bpf/syscall.c | |
parent | 7499a288bf1a4a49be9d72beb0a5c7b9aa6ffec9 (diff) | |
parent | 27b4ad621e887ce8e5eb508a0103f13d30f6b38a (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.c | 12 |
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 | ||
788 | done: | ||
781 | if (err) | 789 | if (err) |
782 | goto free_value; | 790 | goto free_value; |
783 | 791 | ||