bpf: Move GRAPH_{ROOT,NODE}_MASK macros into btf_field_type enum
authorDave Marchevsky <davemarchevsky@fb.com>
Tue, 7 Nov 2023 08:56:37 +0000 (00:56 -0800)
committerAlexei Starovoitov <ast@kernel.org>
Fri, 10 Nov 2023 03:07:51 +0000 (19:07 -0800)
This refactoring patch removes the unused BPF_GRAPH_NODE_OR_ROOT
btf_field_type and moves BPF_GRAPH_{NODE,ROOT} macros into the
btf_field_type enum. Further patches in the series will use
BPF_GRAPH_NODE, so let's move this useful definition out of btf.c.

Signed-off-by: Dave Marchevsky <davemarchevsky@fb.com>
Link: https://lore.kernel.org/r/20231107085639.3016113-5-davemarchevsky@fb.com
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
include/linux/bpf.h
kernel/bpf/btf.c

index eb84caf133df9e22daf0c55ff4fd1a987e376405..4001d11be15160552b5414c5ff5d844fce30c52c 100644 (file)
@@ -186,8 +186,8 @@ enum btf_field_type {
        BPF_LIST_NODE  = (1 << 6),
        BPF_RB_ROOT    = (1 << 7),
        BPF_RB_NODE    = (1 << 8),
-       BPF_GRAPH_NODE_OR_ROOT = BPF_LIST_NODE | BPF_LIST_HEAD |
-                                BPF_RB_NODE | BPF_RB_ROOT,
+       BPF_GRAPH_NODE = BPF_RB_NODE | BPF_LIST_NODE,
+       BPF_GRAPH_ROOT = BPF_RB_ROOT | BPF_LIST_HEAD,
        BPF_REFCOUNT   = (1 << 9),
 };
 
index 15d71d2986d3a1779ca2a99360be1edd6352c971..63cf4128fc05945cf525ec309181ec9c9c537a5d 100644 (file)
@@ -3840,9 +3840,6 @@ end:
        return ERR_PTR(ret);
 }
 
-#define GRAPH_ROOT_MASK (BPF_LIST_HEAD | BPF_RB_ROOT)
-#define GRAPH_NODE_MASK (BPF_LIST_NODE | BPF_RB_NODE)
-
 int btf_check_and_fixup_fields(const struct btf *btf, struct btf_record *rec)
 {
        int i;
@@ -3855,13 +3852,13 @@ int btf_check_and_fixup_fields(const struct btf *btf, struct btf_record *rec)
         * Hence we only need to ensure that bpf_{list_head,rb_root} ownership
         * does not form cycles.
         */
-       if (IS_ERR_OR_NULL(rec) || !(rec->field_mask & GRAPH_ROOT_MASK))
+       if (IS_ERR_OR_NULL(rec) || !(rec->field_mask & BPF_GRAPH_ROOT))
                return 0;
        for (i = 0; i < rec->cnt; i++) {
                struct btf_struct_meta *meta;
                u32 btf_id;
 
-               if (!(rec->fields[i].type & GRAPH_ROOT_MASK))
+               if (!(rec->fields[i].type & BPF_GRAPH_ROOT))
                        continue;
                btf_id = rec->fields[i].graph_root.value_btf_id;
                meta = btf_find_struct_meta(btf, btf_id);
@@ -3873,7 +3870,7 @@ int btf_check_and_fixup_fields(const struct btf *btf, struct btf_record *rec)
                 * to check ownership cycle for a type unless it's also a
                 * node type.
                 */
-               if (!(rec->field_mask & GRAPH_NODE_MASK))
+               if (!(rec->field_mask & BPF_GRAPH_NODE))
                        continue;
 
                /* We need to ensure ownership acyclicity among all types. The
@@ -3909,7 +3906,7 @@ int btf_check_and_fixup_fields(const struct btf *btf, struct btf_record *rec)
                 * - A is both an root and node.
                 * - B is only an node.
                 */
-               if (meta->record->field_mask & GRAPH_ROOT_MASK)
+               if (meta->record->field_mask & BPF_GRAPH_ROOT)
                        return -ELOOP;
        }
        return 0;