From: Martin KaFai Lau <kafai@fb.com>
Date: Wed, 4 Mar 2020 17:34:54 -0800
Subject: bpf: Do not allow map_freeze in struct_ops map
Patch-mainline: v5.6
Git-commit: 849b4d94582a966ecb533448415462846da1f0fa
References: bsc#1177028
struct_ops map cannot support map_freeze. Otherwise, a struct_ops
cannot be unregistered from the subsystem.
Fixes: 85d33df357b6 ("bpf: Introduce BPF_MAP_TYPE_STRUCT_OPS")
Signed-off-by: Martin KaFai Lau <kafai@fb.com>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Link: https://lore.kernel.org/bpf/20200305013454.535397-1-kafai@fb.com
Acked-by: Gary Lin <glin@suse.com>
---
kernel/bpf/syscall.c | 5 +++++
1 file changed, 5 insertions(+)
--- a/kernel/bpf/syscall.c
+++ b/kernel/bpf/syscall.c
@@ -1510,6 +1510,11 @@ static int map_freeze(const union bpf_at
if (IS_ERR(map))
return PTR_ERR(map);
+ if (map->map_type == BPF_MAP_TYPE_STRUCT_OPS) {
+ fdput(f);
+ return -ENOTSUPP;
+ }
+
mutex_lock(&map->freeze_mutex);
if (map->writecnt) {