As there is one-to-one relation between a bpf program
and cgroup local storage map, there is no sense in
creating a map of cgroup local storage maps.

Forbid it explicitly to avoid possible side effects.

Signed-off-by: Roman Gushchin <[email protected]>
Cc: Alexei Starovoitov <[email protected]>
Cc: Daniel Borkmann <[email protected]>
Acked-by: Martin KaFai Lau <[email protected]>
---
 kernel/bpf/map_in_map.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/kernel/bpf/map_in_map.c b/kernel/bpf/map_in_map.c
index 1da574612bea..3bfbf4464416 100644
--- a/kernel/bpf/map_in_map.c
+++ b/kernel/bpf/map_in_map.c
@@ -23,7 +23,8 @@ struct bpf_map *bpf_map_meta_alloc(int inner_map_ufd)
         * is a runtime binding.  Doing static check alone
         * in the verifier is not enough.
         */
-       if (inner_map->map_type == BPF_MAP_TYPE_PROG_ARRAY) {
+       if (inner_map->map_type == BPF_MAP_TYPE_PROG_ARRAY ||
+           inner_map->map_type == BPF_MAP_TYPE_CGROUP_STORAGE) {
                fdput(f);
                return ERR_PTR(-ENOTSUPP);
        }
-- 
2.14.4

Reply via email to