[OE-core] [PATCH] linux-libc-headers: fix duplicate IFF_LOWER_UP DORMANT ECHO on musl

Khem Raj raj.khem at gmail.com
Thu Jun 22 22:26:58 UTC 2017


I would rather fix the package instead of kernel headers unless kernel
community accepts this patch

On Thu, Jun 22, 2017 at 11:14 AM André Draszik <git at andred.net> wrote:

> From: André Draszik <adraszik at tycoint.com>
>
> musl _does_ define IFF_LOWER_UP DORMANT ECHO so we should
> prevent redefinition of these when on musl.
>
> As per the included patch, this can be triggered by
> (from connman 6to4.c):
>     include <errno.h>
>     include <stdio.h>
>     include <stdlib.h>
>     include <string.h>
>     include <sys/socket.h>
>     include <netinet/in.h>
>     include <arpa/inet.h>
>     include <net/if.h>
>     include <linux/ip.h>
>     include <linux/if_tunnel.h>
>     include <linux/netlink.h>
>     include <linux/rtnetlink.h>
>     include <sys/ioctl.h>
>     include <unistd.h>
>
> In file included from ../git/src/6to4.c:34:0:
> .../usr/include/linux/if.h:97:2: error: expected identifier before numeric
> constant
>   IFF_LOWER_UP   = 1<<16, /* __volatile__ */
>   ^
>
> This is because at that time, IFF_LOWER_UP has been converted
> to 0x10000 already:
> enum net_device_flags {
>  0x10000 = 1<<16,
>  0x20000 = 1<<17,
>  0x40000 = 1<<18,
>
> };
>
> By defining __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO
> to 0, we avoid the duplicated definition.
>
> Signed-off-by: André Draszik <adraszik at tycoint.com>
> ---
>  ....h-musl-_does_-define-IFF_LOWER_UP-DORMAN.patch | 62
> ++++++++++++++++++++++
>  .../linux-libc-headers/linux-libc-headers_4.10.bb  |  1 +
>  2 files changed, 63 insertions(+)
>  create mode 100644
> meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0001-libc-compat.h-musl-_does_-define-IFF_LOWER_UP-DORMAN.patch
>
> diff --git
> a/meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0001-libc-compat.h-musl-_does_-define-IFF_LOWER_UP-DORMAN.patch
> b/meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0001-libc-compat.h-musl-_does_-define-IFF_LOWER_UP-DORMAN.patch
> new file mode 100644
> index 0000000000..fd1bb9edb8
> --- /dev/null
> +++
> b/meta/recipes-kernel/linux-libc-headers/linux-libc-headers/0001-libc-compat.h-musl-_does_-define-IFF_LOWER_UP-DORMAN.patch
> @@ -0,0 +1,62 @@
> +From 08a04c025395b0580913285045f2af36ee0985db Mon Sep 17 00:00:00 2001
> +From: =?UTF-8?q?Andr=C3=A9=20Draszik?= <adraszik at tycoint.com>
> +Date: Thu, 15 Jun 2017 16:55:33 +0100
> +Subject: [PATCH] libc-compat.h: musl _does_ define IFF_LOWER_UP DORMANT
> ECHO
> +MIME-Version: 1.0
> +Content-Type: text/plain; charset=UTF-8
> +Content-Transfer-Encoding: 8bit
> +
> +To trigger this (from connman 6to4.c):
> +    include <errno.h>
> +    include <stdio.h>
> +    include <stdlib.h>
> +    include <string.h>
> +    include <sys/socket.h>
> +    include <netinet/in.h>
> +    include <arpa/inet.h>
> +    include <net/if.h>
> +    include <linux/ip.h>
> +    include <linux/if_tunnel.h>
> +    include <linux/netlink.h>
> +    include <linux/rtnetlink.h>
> +    include <sys/ioctl.h>
> +    include <unistd.h>
> +
> +In file included from ../git/src/6to4.c:34:0:
> +/scratch/yocto/build-tgm-r3-poky-fpp-tgm.pyro/tmp/work/tgm_r3-poky-linux-musl/connman/1.33-git4+AUTOINC+aa5b3dc12b-r0/recipe-sysroot/usr/include/linux/if.h:97:2:
> error: expected identifier before numeric constant
> +  IFF_LOWER_UP   = 1<<16, /* __volatile__ */
> +  ^
> +
> +This is because at that time, IFF_LOWER_UP has been converted
> +to 0x10000 already:
> +enum net_device_flags {
> + 0x10000 = 1<<16,
> + 0x20000 = 1<<17,
> + 0x40000 = 1<<18,
> +
> +};
> +
> +Upstream-Status: Pending
> +Signed-off-by: André Draszik <adraszik at tycoint.com>
> +Acked-by: Stephane Ayotte <sayotte at tycoint.com>
> +---
> + include/uapi/linux/libc-compat.h | 3 ++-
> + 1 file changed, 2 insertions(+), 1 deletion(-)
> +
> +diff --git a/include/uapi/linux/libc-compat.h
> b/include/uapi/linux/libc-compat.h
> +index f11ec0e..2003ae4 100644
> +--- a/include/uapi/linux/libc-compat.h
> ++++ b/include/uapi/linux/libc-compat.h
> +@@ -70,7 +70,8 @@
> + #define __UAPI_DEF_IF_NET_DEVICE_FLAGS 0
> + /* For the future if glibc adds IFF_LOWER_UP, IFF_DORMANT and IFF_ECHO */
> + #ifndef __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO
> +-#define __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO 1
> ++/* musl has these defined */
> ++#define __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO 0
> + #endif /* __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO */
> +
> + #else /* _NET_IF_H */
> +--
> +2.11.0
> +
> diff --git a/meta/recipes-kernel/linux-libc-headers/
> linux-libc-headers_4.10.bb b/meta/recipes-kernel/linux-libc-headers/
> linux-libc-headers_4.10.bb
> index 108446aa34..29262789a8 100644
> --- a/meta/recipes-kernel/linux-libc-headers/linux-libc-headers_4.10.bb
> +++ b/meta/recipes-kernel/linux-libc-headers/linux-libc-headers_4.10.bb
> @@ -4,6 +4,7 @@ SRC_URI_append_libc-musl = "\
>      file://0001-libc-compat.h-fix-some-issues-arising-from-in6.h.patch \
>      file://0002-libc-compat.h-prevent-redefinition-of-struct-ethhdr.patch
> \
>      file://0003-remove-inclusion-of-sysinfo.h-in-kernel.h.patch \
> +
> file://0001-libc-compat.h-musl-_does_-define-IFF_LOWER_UP-DORMAN.patch \
>     "
>
>  SRC_URI[md5sum] = "b5e7f6b9b2fe1b6cc7bc56a3a0bfc090"
> --
> 2.11.0
>
> --
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core at lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-core
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openembedded.org/pipermail/openembedded-core/attachments/20170622/ab3025e9/attachment-0002.html>


More information about the Openembedded-core mailing list