Message ID | 20230203160448.1314205-1-herton@redhat.com (mailing list archive) |
---|---|
State | Accepted |
Commit | 03702d4d29be4e2510ec80b248dbbde4e57030d9 |
Headers | show |
Series | uapi: add missing ip/ipv6 header dependencies for linux/stddef.h | expand |
Context | Check | Description |
---|---|---|
netdev/tree_selection | success | Not a local patch |
On 2/3/23 11:04, Herton R. Krzesinski wrote: > Since commit 58e0be1ef6118 ("net: use struct_group to copy ip/ipv6 > header addresses"), ip and ipv6 headers started to use the __struct_group > definition, which is defined at include/uapi/linux/stddef.h. However, > linux/stddef.h isn't explicitly included in include/uapi/linux/{ip,ipv6}.h, > which breaks build of xskxceiver bpf selftest if you install the uapi > headers in the system: > > $ make V=1 xskxceiver -C tools/testing/selftests/bpf > ... > make: Entering directory '(...)/tools/testing/selftests/bpf' > gcc -g -O0 -rdynamic -Wall -Werror (...) > In file included from xskxceiver.c:79: > /usr/include/linux/ip.h:103:9: error: expected specifier-qualifier-list before ‘__struct_group’ > 103 | __struct_group(/* no tag */, addrs, /* no attrs */, > | ^~~~~~~~~~~~~~ > ... > > Include the missing <linux/stddef.h> dependency in ip.h and do the > same for the ipv6.h header. > > Fixes: 58e0be1ef611 ("net: use struct_group to copy ip/ipv6 header addresses") > Signed-off-by: Herton R. Krzesinski <herton@redhat.com> LGTM, if you used it you should #include-it. Tested with x86_64 defconfig at 0136d86b78522bbd5755f8194c97a987f0586ba5. Tested building glibc with the new UAPI headers, and that works too. Reviewed-by: Carlos O'Donell <carlos@redhat.com> Tested-by: Carlos O'Donell <carlos@redhat.com> > --- > include/uapi/linux/ip.h | 1 + > include/uapi/linux/ipv6.h | 1 + > 2 files changed, 2 insertions(+) > > diff --git a/include/uapi/linux/ip.h b/include/uapi/linux/ip.h > index 874a92349bf5..283dec7e3645 100644 > --- a/include/uapi/linux/ip.h > +++ b/include/uapi/linux/ip.h > @@ -18,6 +18,7 @@ > #ifndef _UAPI_LINUX_IP_H > #define _UAPI_LINUX_IP_H > #include <linux/types.h> > +#include <linux/stddef.h> OK. Includes stddef.h because of __struct_group use by struct iphdr. > #include <asm/byteorder.h> > > #define IPTOS_TOS_MASK 0x1E > diff --git a/include/uapi/linux/ipv6.h b/include/uapi/linux/ipv6.h > index 81f4243bebb1..53326dfc59ec 100644 > --- a/include/uapi/linux/ipv6.h > +++ b/include/uapi/linux/ipv6.h > @@ -4,6 +4,7 @@ > > #include <linux/libc-compat.h> > #include <linux/types.h> > +#include <linux/stddef.h> OK. Includes stddef.h because of __struct_group use by struct ipv6hdr. > #include <linux/in6.h> > #include <asm/byteorder.h> >
diff --git a/include/uapi/linux/ip.h b/include/uapi/linux/ip.h index 874a92349bf5..283dec7e3645 100644 --- a/include/uapi/linux/ip.h +++ b/include/uapi/linux/ip.h @@ -18,6 +18,7 @@ #ifndef _UAPI_LINUX_IP_H #define _UAPI_LINUX_IP_H #include <linux/types.h> +#include <linux/stddef.h> #include <asm/byteorder.h> #define IPTOS_TOS_MASK 0x1E diff --git a/include/uapi/linux/ipv6.h b/include/uapi/linux/ipv6.h index 81f4243bebb1..53326dfc59ec 100644 --- a/include/uapi/linux/ipv6.h +++ b/include/uapi/linux/ipv6.h @@ -4,6 +4,7 @@ #include <linux/libc-compat.h> #include <linux/types.h> +#include <linux/stddef.h> #include <linux/in6.h> #include <asm/byteorder.h>
Since commit 58e0be1ef6118 ("net: use struct_group to copy ip/ipv6 header addresses"), ip and ipv6 headers started to use the __struct_group definition, which is defined at include/uapi/linux/stddef.h. However, linux/stddef.h isn't explicitly included in include/uapi/linux/{ip,ipv6}.h, which breaks build of xskxceiver bpf selftest if you install the uapi headers in the system: $ make V=1 xskxceiver -C tools/testing/selftests/bpf ... make: Entering directory '(...)/tools/testing/selftests/bpf' gcc -g -O0 -rdynamic -Wall -Werror (...) In file included from xskxceiver.c:79: /usr/include/linux/ip.h:103:9: error: expected specifier-qualifier-list before ‘__struct_group’ 103 | __struct_group(/* no tag */, addrs, /* no attrs */, | ^~~~~~~~~~~~~~ ... Include the missing <linux/stddef.h> dependency in ip.h and do the same for the ipv6.h header. Fixes: 58e0be1ef611 ("net: use struct_group to copy ip/ipv6 header addresses") Signed-off-by: Herton R. Krzesinski <herton@redhat.com> --- include/uapi/linux/ip.h | 1 + include/uapi/linux/ipv6.h | 1 + 2 files changed, 2 insertions(+)