Re: [PATCH bpf-next 02/11] btf: add a global set of valid BTF socket ids

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, Sep 4, 2020 at 4:29 AM Lorenz Bauer <lmb@xxxxxxxxxxxxxx> wrote:
>
> Similar to the existing btf_sock_ids, add a set for the same data.
> This allows searching for sockets using btf_set_contains.
>
> Signed-off-by: Lorenz Bauer <lmb@xxxxxxxxxxxxxx>
> ---
>  include/linux/btf_ids.h       | 1 +
>  net/core/filter.c             | 7 +++++++
>  tools/include/linux/btf_ids.h | 1 +
>  3 files changed, 9 insertions(+)
>
> diff --git a/include/linux/btf_ids.h b/include/linux/btf_ids.h
> index 42aa667d4433..eb6739ebbba4 100644
> --- a/include/linux/btf_ids.h
> +++ b/include/linux/btf_ids.h
> @@ -174,6 +174,7 @@ MAX_BTF_SOCK_TYPE,
>  };
>
>  extern u32 btf_sock_ids[];
> +extern struct btf_id_set btf_sock_ids_set;
>  #endif
>
>  #endif
> diff --git a/net/core/filter.c b/net/core/filter.c
> index 47eef9a0be6a..c7f96cfea1b0 100644
> --- a/net/core/filter.c
> +++ b/net/core/filter.c
> @@ -9903,8 +9903,15 @@ BTF_ID_LIST_GLOBAL(btf_sock_ids)
>  #define BTF_SOCK_TYPE(name, type) BTF_ID(struct, type)
>  BTF_SOCK_TYPE_xxx
>  #undef BTF_SOCK_TYPE
> +
> +BTF_SET_START_GLOBAL(btf_sock_ids_set)
> +#define BTF_SOCK_TYPE(name, type) BTF_ID(struct, type)
> +BTF_SOCK_TYPE_xxx
> +#undef BTF_SOCK_TYPE
> +BTF_SET_END(btf_sock_ids_set)
>  #else
>  u32 btf_sock_ids[MAX_BTF_SOCK_TYPE];
> +struct btf_id_set btf_sock_ids_set;
>  #endif

I haven't looked yet how this is going to be used, but instead of two
pairs of #define/#undef, wouldn't it be more straightforward to do:

#define BTF_SOCK_TYPE(name, type) BTF_ID(struct, type)
BTF_ID_LIST_GLOBAL(btf_sock_ids)
BTF_SOCK_TYPE_xxx

BTF_SET_START_GLOBAL(btf_sock_ids_set)
BTF_SOCK_TYPE_xxx
BTF_SET_END(btf_sock_ids_set)
#undef BTF_SOCK_TYPE

?

>
>  static bool check_arg_btf_id(u32 btf_id, u32 arg)
> diff --git a/tools/include/linux/btf_ids.h b/tools/include/linux/btf_ids.h
> index 42aa667d4433..eb6739ebbba4 100644
> --- a/tools/include/linux/btf_ids.h
> +++ b/tools/include/linux/btf_ids.h
> @@ -174,6 +174,7 @@ MAX_BTF_SOCK_TYPE,
>  };
>
>  extern u32 btf_sock_ids[];
> +extern struct btf_id_set btf_sock_ids_set;
>  #endif
>
>  #endif
> --
> 2.25.1
>



[Index of Archives]     [Linux Samsung SoC]     [Linux Rockchip SoC]     [Linux Actions SoC]     [Linux for Synopsys ARC Processors]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]


  Powered by Linux