From: Martin KaFai Lau Date: Thu, 5 Mar 2020 01:34:54 +0000 (-0800) Subject: bpf: Do not allow map_freeze in struct_ops map X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=849b4d94582a966ecb533448415462846da1f0fa;p=linux.git bpf: Do not allow map_freeze in struct_ops map 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 Signed-off-by: Alexei Starovoitov Link: https://lore.kernel.org/bpf/20200305013454.535397-1-kafai@fb.com --- diff --git a/kernel/bpf/syscall.c b/kernel/bpf/syscall.c index a91ad518c0503..0c7fb0d4836d3 100644 --- a/kernel/bpf/syscall.c +++ b/kernel/bpf/syscall.c @@ -1510,6 +1510,11 @@ static int map_freeze(const union bpf_attr *attr) 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) {