[PATCH 2/4] bpf: update BPF constants

Dmitry V. Levin ldv at altlinux.org
Wed Mar 4 23:50:38 UTC 2020


On Sun, Feb 23, 2020 at 11:13:13AM +0100, Paul Chaignon wrote:
> * xlat/bpf_attach_flags.in (BPF_F_REPLACE): New constant introduced in
> Linux commit v5.6-rc1~151^2~199^2~7^2~3.
> * xlat/bpf_map_types.in (BPF_MAP_TYPE_STRUCT_OPS): New constant
> introduced in Linux commit v5.6-rc1~151^2~46^2~37^2~5.
> * xlat/bpf_prog_types.in (BPF_PROG_TYPE_STRUCT_OPS): New constant
> introduced in Linux commit v5.6-rc1~151^2~46^2~37^2~6.
> (BPF_PROG_TYPE_EXT): New constant introduced in Linux commit
> v5.6-rc1~151^2~46^2~1^2~2.
> * NEWS: Mention this.
> * tests/bpf.c (BPF_MAP_CREATE_checks, BPF_PROG_LOAD_checks,
> BPF_PROG8QUERY_checks): Update expected outputs.
> * tests/kernel_version.c (print_bpf_attr, main): Likewise.
> 
> Signed-off-by: Paul Chaignon <paul.chaignon at gmail.com>
> ---
>  NEWS                     |  1 +
>  tests/bpf.c              | 24 ++++++++++++------------
>  tests/kernel_version.c   |  6 +++---
>  xlat/bpf_attach_flags.in |  5 +++--
>  xlat/bpf_map_types.in    |  1 +
>  xlat/bpf_prog_types.in   |  2 ++
>  6 files changed, 22 insertions(+), 17 deletions(-)
> 
> diff --git a/NEWS b/NEWS
> index 1a4dbdda..c54b97e0 100644
> --- a/NEWS
> +++ b/NEWS
> @@ -3,6 +3,7 @@ Noteworthy changes in release ?.? (????-??-??)
>  
>  * Improvements
>    * Enhanced decoding of BPF_MAP_CREATE bpf syscall command.
> +  * Updated lists of BPF_* constants.
>  
>  * Bug fixes
>    * Fixed build on csky abiv1 architecture.
> diff --git a/tests/bpf.c b/tests/bpf.c
> index a462d008..2e4894a3 100644
> --- a/tests/bpf.c
> +++ b/tests/bpf.c
> @@ -286,7 +286,7 @@ static struct bpf_attr_check BPF_MAP_CREATE_checks[] = {
>  	},
>  	{ /* 2 */
>  		.data = { .BPF_MAP_CREATE_data = {
> -			.map_type = 26,
> +			.map_type = 27,
>  			.key_size = 0xface1e55,
>  			.value_size = 0xbadc0ded,
>  			.max_entries = 0xbeefcafe,
> @@ -297,7 +297,7 @@ static struct bpf_attr_check BPF_MAP_CREATE_checks[] = {
>  			.map_ifindex = 3141592653,
>  		} },
>  		.size = offsetofend(struct BPF_MAP_CREATE_struct, map_ifindex),
> -		.str = "map_type=0x1a /* BPF_MAP_TYPE_??? */"
> +		.str = "map_type=0x1b /* BPF_MAP_TYPE_??? */"
>  		       ", key_size=4207812181, value_size=3134983661"
>  		       ", max_entries=3203386110"
>  		       ", map_flags=0xfffff800 /* BPF_F_??? */"
> @@ -612,7 +612,7 @@ print_BPF_PROG_LOAD_attr4(const struct bpf_attr_check *check, unsigned long addr
>  	       license, IFINDEX_LO_STR);
>  }
>  
> -static_assert(ARRAY_SIZE(bpf_prog_types_xdata) == 27,
> +static_assert(ARRAY_SIZE(bpf_prog_types_xdata) == 29,
>  	      "The prog_type for test 5 below needs to be updated");
>  static struct bpf_attr_check BPF_PROG_LOAD_checks[] = {
>  	{
> @@ -623,7 +623,7 @@ static struct bpf_attr_check BPF_PROG_LOAD_checks[] = {
>  	},
>  	{ /* 1 */
>  		.data = { .BPF_PROG_LOAD_data = {
> -			.prog_type = 27,
> +			.prog_type = 29,
>  			.insn_cnt = 0xbadc0ded,
>  			.insns = 0,
>  			.license = 0,
> @@ -634,7 +634,7 @@ static struct bpf_attr_check BPF_PROG_LOAD_checks[] = {
>  			.prog_flags = 0,
>  		} },
>  		.size = offsetofend(struct BPF_PROG_LOAD_struct, prog_flags),
> -		.str = "prog_type=0x1b /* BPF_PROG_TYPE_??? */"
> +		.str = "prog_type=0x1d /* BPF_PROG_TYPE_??? */"
>  		       ", insn_cnt=3134983661, insns=NULL, license=NULL"
>  		       ", log_level=42, log_size=3141592653, log_buf=NULL"
>  		       ", kern_version=KERNEL_VERSION(51966, 240, 13)"
> @@ -697,7 +697,7 @@ static struct bpf_attr_check BPF_PROG_LOAD_checks[] = {
>  	},
>  	{ /* 5 */
>  		.data = { .BPF_PROG_LOAD_data = {
> -			.prog_type = 26,
> +			.prog_type = 28,
>  			.insn_cnt = 0xbadc0ded,
>  			.insns = 0xffffffff00000000,
>  			.license = 0xffffffff00000000,
> @@ -709,7 +709,7 @@ static struct bpf_attr_check BPF_PROG_LOAD_checks[] = {
>  			.prog_name = "fedcba987654321",
>  		} },
>  		.size = offsetofend(struct BPF_PROG_LOAD_struct, prog_name),
> -		.str = "prog_type=BPF_PROG_TYPE_TRACING"
> +		.str = "prog_type=BPF_PROG_TYPE_EXT"
>  		       ", insn_cnt=3134983661"
>  		       ", insns=" BIG_ADDR("0xffffffff00000000", "NULL")
>  		       ", license=" BIG_ADDR("0xffffffff00000000", "NULL")
> @@ -1034,7 +1034,7 @@ print_BPF_PROG_QUERY_attr4(const struct bpf_attr_check *check, unsigned long add
>  	printf("query={target_fd=-1153374643"
>  	       ", attach_type=0xfeedface /* BPF_??? */"
>  	       ", query_flags=BPF_F_QUERY_EFFECTIVE|0xdeadf00c"
> -	       ", attach_flags=BPF_F_ALLOW_MULTI|0xbeefcafc"
> +	       ", attach_flags=BPF_F_ALLOW_MULTI|BPF_F_REPLACE|0xbeefcaf8"
>  #if defined(INJECT_RETVAL)
>  	       ", prog_ids=[0, 1, 4294967295, 2718281828], prog_cnt=4}"
>  #else
> @@ -1062,7 +1062,7 @@ print_BPF_PROG_QUERY_attr5(const struct bpf_attr_check *check, unsigned long add
>  	printf("query={target_fd=-1153374643"
>  	       ", attach_type=0xfeedface /* BPF_??? */"
>  	       ", query_flags=BPF_F_QUERY_EFFECTIVE|0xdeadf00c"
> -	       ", attach_flags=BPF_F_ALLOW_MULTI|0xbeefcafc"
> +	       ", attach_flags=BPF_F_ALLOW_MULTI|BPF_F_REPLACE|0xbeefcaf8"
>  #if defined(INJECT_RETVAL)
>  	       ", prog_ids=[0, 1, 4294967295, 2718281828, ... /* %p */]"
>  	       ", prog_cnt=5}",
> @@ -1100,7 +1100,7 @@ static struct bpf_attr_check BPF_PROG_QUERY_checks[] = {
>  			.target_fd = 3141592653U,
>  			.attach_type = 26,
>  			.query_flags = 0xfffffffe,
> -			.attach_flags = 0xfffffffc,
> +			.attach_flags = 0xfffffff8,
>  			.prog_ids = 0xffffffffffffffffULL,
>  			.prog_cnt = 2718281828,
>  		} },
> @@ -1108,7 +1108,7 @@ static struct bpf_attr_check BPF_PROG_QUERY_checks[] = {
>  		.str = "query={target_fd=-1153374643"
>  		       ", attach_type=0x1a /* BPF_??? */"
>  		       ", query_flags=0xfffffffe /* BPF_F_QUERY_??? */"
> -		       ", attach_flags=0xfffffffc /* BPF_F_??? */"
> +		       ", attach_flags=0xfffffff8 /* BPF_F_??? */"
>  		       ", prog_ids="
>  		       BIG_ADDR("0xffffffffffffffff", "0xffffffff")
>  		       ", prog_cnt=2718281828}",
> @@ -1126,7 +1126,7 @@ static struct bpf_attr_check BPF_PROG_QUERY_checks[] = {
>  		.str = "query={target_fd=-1153374643"
>  		       ", attach_type=0xfeedface /* BPF_??? */"
>  		       ", query_flags=BPF_F_QUERY_EFFECTIVE|0xdeadf00c"
> -		       ", attach_flags=BPF_F_ALLOW_MULTI|0xbeefcafc"
> +		       ", attach_flags=BPF_F_ALLOW_MULTI|BPF_F_REPLACE|0xbeefcaf8"
>  		       ", prog_ids=" BIG_ADDR_MAYBE("0xffffffffffffffff") "[]"
>  		       ", prog_cnt=0}",
>  	},
> diff --git a/tests/kernel_version.c b/tests/kernel_version.c
> index a667b584..025e9733 100644
> --- a/tests/kernel_version.c
> +++ b/tests/kernel_version.c
> @@ -34,9 +34,9 @@ static void
>  print_bpf_attr(void)
>  {
>  #if XLAT_RAW
> -	printf("{prog_type=0x1b"
> +	printf("{prog_type=0x1d"
>  #else
> -	printf("{prog_type=0x1b /* BPF_PROG_TYPE_??? */"
> +	printf("{prog_type=0x1d /* BPF_PROG_TYPE_??? */"
>  #endif
>  		", insn_cnt=3134983661"
>  		", insns=NULL"
> @@ -79,7 +79,7 @@ main(void)
>  {
>  	long ret;
>  	struct BPF_PROG_LOAD_struct prog = {
> -		.prog_type = 27,
> +		.prog_type = 29,
>  		.insn_cnt = 0xbadc0ded,
>  		.insns = 0,
>  		.license = 0,
> diff --git a/xlat/bpf_attach_flags.in b/xlat/bpf_attach_flags.in
> index a67c02b6..cee8d191 100644
> --- a/xlat/bpf_attach_flags.in
> +++ b/xlat/bpf_attach_flags.in
> @@ -1,2 +1,3 @@
> -BPF_F_ALLOW_OVERRIDE	1
> -BPF_F_ALLOW_MULTI	2
> +BPF_F_ALLOW_OVERRIDE	1U
> +BPF_F_ALLOW_MULTI	(1U << 1)
> +BPF_F_REPLACE		(1U << 2)
> diff --git a/xlat/bpf_map_types.in b/xlat/bpf_map_types.in
> index 0b3519c9..3aa61d3d 100644
> --- a/xlat/bpf_map_types.in
> +++ b/xlat/bpf_map_types.in
> @@ -25,3 +25,4 @@ BPF_MAP_TYPE_QUEUE 22
>  BPF_MAP_TYPE_STACK 23
>  BPF_MAP_TYPE_SK_STORAGE 24
>  BPF_MAP_TYPE_DEVMAP_HASH 25
> +BPF_MAP_TYPE_STRUCT_OPS 26
> diff --git a/xlat/bpf_prog_types.in b/xlat/bpf_prog_types.in
> index 97d99081..e572311e 100644
> --- a/xlat/bpf_prog_types.in
> +++ b/xlat/bpf_prog_types.in
> @@ -26,3 +26,5 @@ BPF_PROG_TYPE_CGROUP_SYSCTL 23
>  BPF_PROG_TYPE_RAW_TRACEPOINT_WRITABLE 24
>  BPF_PROG_TYPE_CGROUP_SOCKOPT 25
>  BPF_PROG_TYPE_TRACING 26
> +BPF_PROG_TYPE_STRUCT_OPS 27
> +BPF_PROG_TYPE_EXT 28

Eugene suggested to update the first check of BPF_MAP_CREATE_checks as well.

I've pushed the following commit to ldv/next branch for testing,
please let me know if anything has to be changed.


-- 
ldv
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0004-bpf-update-BPF_-constants.patch
Type: text/x-patch
Size: 9134 bytes
Desc: not available
URL: <http://lists.strace.io/pipermail/strace-devel/attachments/20200305/b73b3125/attachment.bin>


More information about the Strace-devel mailing list