bpf: expose bpf_strtol and bpf_strtoul to all program types
authorStanislav Fomichev <sdf@google.com>
Tue, 23 Aug 2022 22:25:53 +0000 (15:25 -0700)
committerAlexei Starovoitov <ast@kernel.org>
Tue, 23 Aug 2022 23:08:21 +0000 (16:08 -0700)
bpf_strncmp is already exposed everywhere. The motivation is to keep
those helpers in kernel/bpf/helpers.c. Otherwise it's tempting to move
them under kernel/bpf/cgroup.c because they are currently only used
by sysctl prog types.

Suggested-by: Martin KaFai Lau <kafai@fb.com>
Acked-by: Martin KaFai Lau <kafai@fb.com>
Signed-off-by: Stanislav Fomichev <sdf@google.com>
Link: https://lore.kernel.org/r/20220823222555.523590-4-sdf@google.com
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
kernel/bpf/cgroup.c
kernel/bpf/helpers.c

index 0bf2d70..121b5a5 100644 (file)
@@ -2132,10 +2132,6 @@ sysctl_func_proto(enum bpf_func_id func_id, const struct bpf_prog *prog)
                return func_proto;
 
        switch (func_id) {
-       case BPF_FUNC_strtol:
-               return &bpf_strtol_proto;
-       case BPF_FUNC_strtoul:
-               return &bpf_strtoul_proto;
        case BPF_FUNC_sysctl_get_name:
                return &bpf_sysctl_get_name_proto;
        case BPF_FUNC_sysctl_get_current_value:
index 6439a87..2f47093 100644 (file)
@@ -427,6 +427,7 @@ const struct bpf_func_proto bpf_get_current_ancestor_cgroup_id_proto = {
        .ret_type       = RET_INTEGER,
        .arg1_type      = ARG_ANYTHING,
 };
+#endif /* CONFIG_CGROUPS */
 
 #define BPF_STRTOX_BASE_MASK 0x1F
 
@@ -555,7 +556,6 @@ const struct bpf_func_proto bpf_strtoul_proto = {
        .arg3_type      = ARG_ANYTHING,
        .arg4_type      = ARG_PTR_TO_LONG,
 };
-#endif
 
 BPF_CALL_3(bpf_strncmp, const char *, s1, u32, s1_sz, const char *, s2)
 {
@@ -1619,6 +1619,10 @@ bpf_base_func_proto(enum bpf_func_id func_id)
                return &bpf_loop_proto;
        case BPF_FUNC_strncmp:
                return &bpf_strncmp_proto;
+       case BPF_FUNC_strtol:
+               return &bpf_strtol_proto;
+       case BPF_FUNC_strtoul:
+               return &bpf_strtoul_proto;
        case BPF_FUNC_dynptr_from_mem:
                return &bpf_dynptr_from_mem_proto;
        case BPF_FUNC_dynptr_read: