mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-19 09:04:51 +08:00
bpf: Change btf_record_find enum parameter to field_mask
btf_record_find's 3rd parameter can be multiple enum btf_field_type's masked together. The function is called with BPF_KPTR in two places in verifier.c, so it works with masked values already. Signed-off-by: Dave Marchevsky <davemarchevsky@fb.com> Link: https://lore.kernel.org/r/20230309180111.1618459-4-davemarchevsky@fb.com Signed-off-by: Alexei Starovoitov <ast@kernel.org>
This commit is contained in:
parent
a4aa38897b
commit
74843b57ec
@ -1925,7 +1925,7 @@ void bpf_prog_free_id(struct bpf_prog *prog);
|
|||||||
void bpf_map_free_id(struct bpf_map *map);
|
void bpf_map_free_id(struct bpf_map *map);
|
||||||
|
|
||||||
struct btf_field *btf_record_find(const struct btf_record *rec,
|
struct btf_field *btf_record_find(const struct btf_record *rec,
|
||||||
u32 offset, enum btf_field_type type);
|
u32 offset, u32 field_mask);
|
||||||
void btf_record_free(struct btf_record *rec);
|
void btf_record_free(struct btf_record *rec);
|
||||||
void bpf_map_free_record(struct bpf_map *map);
|
void bpf_map_free_record(struct bpf_map *map);
|
||||||
struct btf_record *btf_record_dup(const struct btf_record *rec);
|
struct btf_record *btf_record_dup(const struct btf_record *rec);
|
||||||
|
@ -520,14 +520,14 @@ static int btf_field_cmp(const void *a, const void *b)
|
|||||||
}
|
}
|
||||||
|
|
||||||
struct btf_field *btf_record_find(const struct btf_record *rec, u32 offset,
|
struct btf_field *btf_record_find(const struct btf_record *rec, u32 offset,
|
||||||
enum btf_field_type type)
|
u32 field_mask)
|
||||||
{
|
{
|
||||||
struct btf_field *field;
|
struct btf_field *field;
|
||||||
|
|
||||||
if (IS_ERR_OR_NULL(rec) || !(rec->field_mask & type))
|
if (IS_ERR_OR_NULL(rec) || !(rec->field_mask & field_mask))
|
||||||
return NULL;
|
return NULL;
|
||||||
field = bsearch(&offset, rec->fields, rec->cnt, sizeof(rec->fields[0]), btf_field_cmp);
|
field = bsearch(&offset, rec->fields, rec->cnt, sizeof(rec->fields[0]), btf_field_cmp);
|
||||||
if (!field || !(field->type & type))
|
if (!field || !(field->type & field_mask))
|
||||||
return NULL;
|
return NULL;
|
||||||
return field;
|
return field;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user