diff mbox series

uapi: add missing ip/ipv6 header dependencies for linux/stddef.h

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

Checks

Context Check Description
netdev/tree_selection success Not a local patch

Commit Message

Herton R. Krzesinski Feb. 3, 2023, 4:04 p.m. UTC
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(+)

Comments

Carlos O'Donell Feb. 4, 2023, 3:46 p.m. UTC | #1
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 mbox series

Patch

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>