diff --git a/kernel/bpf/syscall.c b/kernel/bpf/syscall.c index f7f9307dd17e70..a749b36400c339 100644 --- a/kernel/bpf/syscall.c +++ b/kernel/bpf/syscall.c @@ -798,7 +798,7 @@ static int map_lookup_elem(union bpf_attr *attr) value_size = map->value_size; err = -ENOMEM; - value = kmalloc(value_size, GFP_USER | __GFP_NOWARN); + value = kvmalloc(value_size, GFP_USER | __GFP_NOWARN); if (!value) goto free_key; @@ -847,7 +847,7 @@ static int map_lookup_elem(union bpf_attr *attr) err = 0; free_value: - kfree(value); + kvfree(value); free_key: kfree(key); err_put: @@ -906,7 +906,7 @@ static int map_update_elem(union bpf_attr *attr) value_size = map->value_size; err = -ENOMEM; - value = kmalloc(value_size, GFP_USER | __GFP_NOWARN); + value = kvmalloc(value_size, GFP_USER | __GFP_NOWARN); if (!value) goto free_key; @@ -959,7 +959,7 @@ static int map_update_elem(union bpf_attr *attr) maybe_wait_bpf_programs(map); out: free_value: - kfree(value); + kvfree(value); free_key: kfree(key); err_put: