Re: [PATCH] bpf: use flexible array members, not zero-length
From: Gustavo A. R. Silva <hidden>
Date: 2019-09-28 23:12:20
Also in:
bpf, linux-doc
On 9/28/19 09:48, Stephen Kitt wrote:
quoted hunk ↗ jump to hunk
This switches zero-length arrays in variable-length structs to C99 flexible array members. GCC will then ensure that the arrays are always the last element in the struct. Coccinelle: @@ identifier S, fld; type T; @@ struct S { ... - T fld[0]; + T fld[]; ... }; Signed-off-by: Stephen Kitt <redacted> --- Documentation/bpf/btf.rst | 2 +- tools/lib/bpf/libbpf.c | 2 +- tools/lib/bpf/libbpf_internal.h | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-)diff --git a/Documentation/bpf/btf.rst b/Documentation/bpf/btf.rst index 4d565d202ce3..24ce50fc1fc1 100644 --- a/Documentation/bpf/btf.rst +++ b/Documentation/bpf/btf.rst@@ -670,7 +670,7 @@ func_info for each specific ELF section.:: __u32 sec_name_off; /* offset to section name */ __u32 num_info; /* Followed by num_info * record_size number of bytes */ - __u8 data[0]; + __u8 data[]; }; Here, num_info must be greater than 0.diff --git a/tools/lib/bpf/libbpf.c b/tools/lib/bpf/libbpf.c index e0276520171b..c02ea0e1a588 100644 --- a/tools/lib/bpf/libbpf.c +++ b/tools/lib/bpf/libbpf.c@@ -5577,7 +5577,7 @@ static struct perf_buffer *__perf_buffer__new(int map_fd, size_t page_cnt, struct perf_sample_raw { struct perf_event_header header; uint32_t size; - char data[0]; + char data[]; }; struct perf_sample_lost {diff --git a/tools/lib/bpf/libbpf_internal.h b/tools/lib/bpf/libbpf_internal.h index 2e83a34f8c79..26eaa3f594aa 100644 --- a/tools/lib/bpf/libbpf_internal.h +++ b/tools/lib/bpf/libbpf_internal.h@@ -86,7 +86,7 @@ struct btf_ext_info_sec { __u32 sec_name_off; __u32 num_info; /* Followed by num_info * record_size number of bytes */ - __u8 data[0]; + __u8 data[];
I think you should preserve the tab here. -- Gustavo
}; /* The minimum bpf_func_info checked by the loader */