Discussion:
[Buildroot] [PATCH/next 1/1] linuxptp: fix build with kernel headers >= 4.19
Fabrice Fontaine
2018-11-29 21:47:30 UTC
Permalink
clockid_t has been added in net_tstamp.h since kernel 4.19 and
https://github.com/torvalds/linux/commit/80b14dee2bea128928537d61c333f24cb8cbb62f

As a result, build fails on:
In file included from clock.c:20:
/home/peko/autobuild/instance-0/output/host/arc-buildroot-linux-uclibc/sysroot/usr/include/linux/net_tstamp.h:158:2: error: unknown type name 'clockid_t'
clockid_t clockid; /* reference clockid */

To fix this error, add (or move) include on time.h before net_tstamp.h
in clock.c, sk.c and timemaster.c

Fixes:
- http://autobuild.buildroot.org/results/4f53c0b6f3395f4d1ec0aa58f9df36c8145b1066

Signed-off-by: Fabrice Fontaine <***@gmail.com>
---
.../0002-fix-build-with-kernel-headers-4.19.patch | 71 ++++++++++++++++++++++
1 file changed, 71 insertions(+)
create mode 100644 package/linuxptp/0002-fix-build-with-kernel-headers-4.19.patch

diff --git a/package/linuxptp/0002-fix-build-with-kernel-headers-4.19.patch b/package/linuxptp/0002-fix-build-with-kernel-headers-4.19.patch
new file mode 100644
index 0000000000..de7c964dad
--- /dev/null
+++ b/package/linuxptp/0002-fix-build-with-kernel-headers-4.19.patch
@@ -0,0 +1,71 @@
+From d378524e88f6228a3fbf58641f6e0002fa9d0724 Mon Sep 17 00:00:00 2001
+From: Fabrice Fontaine <***@gmail.com>
+Date: Thu, 29 Nov 2018 22:19:19 +0100
+Subject: [PATCH] fix build with kernel headers >= 4.19
+
+clockid_t has been added in net_tstamp.h since kernel 4.19 and
+https://github.com/torvalds/linux/commit/80b14dee2bea128928537d61c333f24cb8cbb62f
+
+As a result, build fails on:
+In file included from clock.c:20:
+/home/peko/autobuild/instance-0/output/host/arc-buildroot-linux-uclibc/sysroot/usr/include/linux/net_tstamp.h:158:2: error: unknown type name 'clockid_t'
+ clockid_t clockid; /* reference clockid */
+
+To fix this error, add (or move) include on time.h before net_tstamp.h
+in clock.c, sk.c and timemaster.c
+
+Fixes:
+ - http://autobuild.buildroot.org/results/4f53c0b6f3395f4d1ec0aa58f9df36c8145b1066
+
+Signed-off-by: Fabrice Fontaine <***@gmail.com>
+[Upstream status: https://sourceforge.net/p/linuxptp/code/merge-requests/1]
+---
+ clock.c | 2 +-
+ sk.c | 1 +
+ timemaster.c | 1 +
+ 3 files changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/clock.c b/clock.c
+index 56bc79b..ef9a008 100644
+--- a/clock.c
++++ b/clock.c
+@@ -17,11 +17,11 @@
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+ #include <errno.h>
++#include <time.h>
+ #include <linux/net_tstamp.h>
+ #include <poll.h>
+ #include <stdlib.h>
+ #include <string.h>
+-#include <time.h>
+ #include <sys/queue.h>
+
+ #include "address.h"
+diff --git a/sk.c b/sk.c
+index e2b1f28..30162eb 100644
+--- a/sk.c
++++ b/sk.c
+@@ -18,6 +18,7 @@
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+ #include <errno.h>
++#include <time.h>
+ #include <linux/net_tstamp.h>
+ #include <linux/sockios.h>
+ #include <linux/ethtool.h>
+diff --git a/timemaster.c b/timemaster.c
+index 058678f..00db59f 100644
+--- a/timemaster.c
++++ b/timemaster.c
+@@ -22,6 +22,7 @@
+ #include <errno.h>
+ #include <libgen.h>
+ #include <limits.h>
++#include <time.h>
+ #include <linux/net_tstamp.h>
+ #include <net/if.h>
+ #include <signal.h>
+--
+2.14.1
+
--
2.14.1
Baruch Siach
2018-11-30 04:26:55 UTC
Permalink
Hi Fabrice,

Adding Richard Cochran who introduced this net_tstamp.h change in kernel
commit 80b14dee2be.
Post by Fabrice Fontaine
clockid_t has been added in net_tstamp.h since kernel 4.19 and
https://github.com/torvalds/linux/commit/80b14dee2bea128928537d61c333f24cb8cbb62f
/home/peko/autobuild/instance-0/output/host/arc-buildroot-linux-uclibc/sysroot/usr/include/linux/net_tstamp.h:158:2: error: unknown type name 'clockid_t'
clockid_t clockid; /* reference clockid */
To fix this error, add (or move) include on time.h before net_tstamp.h
in clock.c, sk.c and timemaster.c
I think this is a bug in the net_tstamp.h header. UAPI headers should
not reference userspace types. It should use __kernel_clockid_t instead.

Richard, can you comment on that?

Thanks,
baruch
Post by Fabrice Fontaine
- http://autobuild.buildroot.org/results/4f53c0b6f3395f4d1ec0aa58f9df36c8145b1066
---
.../0002-fix-build-with-kernel-headers-4.19.patch | 71 ++++++++++++++++++++++
1 file changed, 71 insertions(+)
create mode 100644 package/linuxptp/0002-fix-build-with-kernel-headers-4.19.patch
diff --git a/package/linuxptp/0002-fix-build-with-kernel-headers-4.19.patch b/package/linuxptp/0002-fix-build-with-kernel-headers-4.19.patch
new file mode 100644
index 0000000000..de7c964dad
--- /dev/null
+++ b/package/linuxptp/0002-fix-build-with-kernel-headers-4.19.patch
@@ -0,0 +1,71 @@
+From d378524e88f6228a3fbf58641f6e0002fa9d0724 Mon Sep 17 00:00:00 2001
+Date: Thu, 29 Nov 2018 22:19:19 +0100
+Subject: [PATCH] fix build with kernel headers >= 4.19
+
+clockid_t has been added in net_tstamp.h since kernel 4.19 and
+https://github.com/torvalds/linux/commit/80b14dee2bea128928537d61c333f24cb8cbb62f
+
+/home/peko/autobuild/instance-0/output/host/arc-buildroot-linux-uclibc/sysroot/usr/include/linux/net_tstamp.h:158:2: error: unknown type name 'clockid_t'
+ clockid_t clockid; /* reference clockid */
+
+To fix this error, add (or move) include on time.h before net_tstamp.h
+in clock.c, sk.c and timemaster.c
+
+ - http://autobuild.buildroot.org/results/4f53c0b6f3395f4d1ec0aa58f9df36c8145b1066
+
+[Upstream status: https://sourceforge.net/p/linuxptp/code/merge-requests/1]
+---
+ clock.c | 2 +-
+ sk.c | 1 +
+ timemaster.c | 1 +
+ 3 files changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/clock.c b/clock.c
+index 56bc79b..ef9a008 100644
+--- a/clock.c
++++ b/clock.c
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+ #include <errno.h>
++#include <time.h>
+ #include <linux/net_tstamp.h>
+ #include <poll.h>
+ #include <stdlib.h>
+ #include <string.h>
+-#include <time.h>
+ #include <sys/queue.h>
+
+ #include "address.h"
+diff --git a/sk.c b/sk.c
+index e2b1f28..30162eb 100644
+--- a/sk.c
++++ b/sk.c
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+ #include <errno.h>
++#include <time.h>
+ #include <linux/net_tstamp.h>
+ #include <linux/sockios.h>
+ #include <linux/ethtool.h>
+diff --git a/timemaster.c b/timemaster.c
+index 058678f..00db59f 100644
+--- a/timemaster.c
++++ b/timemaster.c
+ #include <errno.h>
+ #include <libgen.h>
+ #include <limits.h>
++#include <time.h>
+ #include <linux/net_tstamp.h>
+ #include <net/if.h>
+ #include <signal.h>
+--
+2.14.1
+
--
http://baruch.siach.name/blog/ ~. .~ Tk Open Systems
=}------------------------------------------------ooO--U--Ooo------------{=
- ***@tkos.co.il - tel: +972.52.368.4656, http://www.tkos.co.il -
Baruch Siach
2018-11-30 04:26:55 UTC
Permalink
Hi Fabrice,

[ Resending with the updated address of Richard ]

Adding Richard Cochran who introduced this net_tstamp.h change in kernel
commit 80b14dee2be.
Post by Fabrice Fontaine
clockid_t has been added in net_tstamp.h since kernel 4.19 and
https://github.com/torvalds/linux/commit/80b14dee2bea128928537d61c333f24cb8cbb62f
/home/peko/autobuild/instance-0/output/host/arc-buildroot-linux-uclibc/sysroot/usr/include/linux/net_tstamp.h:158:2: error: unknown type name 'clockid_t'
clockid_t clockid; /* reference clockid */
To fix this error, add (or move) include on time.h before net_tstamp.h
in clock.c, sk.c and timemaster.c
I think this is a bug in the net_tstamp.h header. UAPI headers should
not reference userspace types. It should use __kernel_clockid_t instead.

Richard, can you comment on that?

Thanks,
baruch
Post by Fabrice Fontaine
- http://autobuild.buildroot.org/results/4f53c0b6f3395f4d1ec0aa58f9df36c8145b1066
---
.../0002-fix-build-with-kernel-headers-4.19.patch | 71 ++++++++++++++++++++++
1 file changed, 71 insertions(+)
create mode 100644 package/linuxptp/0002-fix-build-with-kernel-headers-4.19.patch
diff --git a/package/linuxptp/0002-fix-build-with-kernel-headers-4.19.patch b/package/linuxptp/0002-fix-build-with-kernel-headers-4.19.patch
new file mode 100644
index 0000000000..de7c964dad
--- /dev/null
+++ b/package/linuxptp/0002-fix-build-with-kernel-headers-4.19.patch
@@ -0,0 +1,71 @@
+From d378524e88f6228a3fbf58641f6e0002fa9d0724 Mon Sep 17 00:00:00 2001
+Date: Thu, 29 Nov 2018 22:19:19 +0100
+Subject: [PATCH] fix build with kernel headers >= 4.19
+
+clockid_t has been added in net_tstamp.h since kernel 4.19 and
+https://github.com/torvalds/linux/commit/80b14dee2bea128928537d61c333f24cb8cbb62f
+
+/home/peko/autobuild/instance-0/output/host/arc-buildroot-linux-uclibc/sysroot/usr/include/linux/net_tstamp.h:158:2: error: unknown type name 'clockid_t'
+ clockid_t clockid; /* reference clockid */
+
+To fix this error, add (or move) include on time.h before net_tstamp.h
+in clock.c, sk.c and timemaster.c
+
+ - http://autobuild.buildroot.org/results/4f53c0b6f3395f4d1ec0aa58f9df36c8145b1066
+
+[Upstream status: https://sourceforge.net/p/linuxptp/code/merge-requests/1]
+---
+ clock.c | 2 +-
+ sk.c | 1 +
+ timemaster.c | 1 +
+ 3 files changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/clock.c b/clock.c
+index 56bc79b..ef9a008 100644
+--- a/clock.c
++++ b/clock.c
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+ #include <errno.h>
++#include <time.h>
+ #include <linux/net_tstamp.h>
+ #include <poll.h>
+ #include <stdlib.h>
+ #include <string.h>
+-#include <time.h>
+ #include <sys/queue.h>
+
+ #include "address.h"
+diff --git a/sk.c b/sk.c
+index e2b1f28..30162eb 100644
+--- a/sk.c
++++ b/sk.c
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+ #include <errno.h>
++#include <time.h>
+ #include <linux/net_tstamp.h>
+ #include <linux/sockios.h>
+ #include <linux/ethtool.h>
+diff --git a/timemaster.c b/timemaster.c
+index 058678f..00db59f 100644
+--- a/timemaster.c
++++ b/timemaster.c
+ #include <errno.h>
+ #include <libgen.h>
+ #include <limits.h>
++#include <time.h>
+ #include <linux/net_tstamp.h>
+ #include <net/if.h>
+ #include <signal.h>
+--
+2.14.1
+
--
http://baruch.siach.name/blog/ ~. .~ Tk Open Systems
=}------------------------------------------------ooO--U--Ooo------------{=
- ***@tkos.co.il - tel: +972.52.368.4656, http://www.tkos.co.il -
Baruch Siach
2018-12-09 22:05:18 UTC
Permalink
Hi Thomas,
Post by Baruch Siach
[ Resending with the updated address of Richard ]
Adding Richard Cochran who introduced this net_tstamp.h change in kernel
commit 80b14dee2be.
Post by Fabrice Fontaine
clockid_t has been added in net_tstamp.h since kernel 4.19 and
https://github.com/torvalds/linux/commit/80b14dee2bea128928537d61c333f24cb8cbb62f
/home/peko/autobuild/instance-0/output/host/arc-buildroot-linux-uclibc/sysroot/usr/include/linux/net_tstamp.h:158:2: error: unknown type name 'clockid_t'
clockid_t clockid; /* reference clockid */
To fix this error, add (or move) include on time.h before net_tstamp.h
in clock.c, sk.c and timemaster.c
I think this is a bug in the net_tstamp.h header. UAPI headers should
not reference userspace types. It should use __kernel_clockid_t instead.
Richard, can you comment on that?
Any update on this? I agree with Baruch here, __kernel_clockid_t should
be used.
However, 4.19 is already released with this clockid_t reference, so I
guess we will anyway have to support that ?
A patch fixing that would be backported to 4.19.x I think. So unless
some external toolchain sticks to older buggy header, we can get away
with that.

baruch

--
http://baruch.siach.name/blog/ ~. .~ Tk Open Systems
=}------------------------------------------------ooO--U--Ooo------------{=
- ***@tkos.co.il - tel: +972.52.368.4656, http://www.tkos.co.il -
Thomas Petazzoni
2018-12-10 07:51:29 UTC
Permalink
Hello Richard,
However, 4.19 is already released with this clockid_t reference, so I
guess we will anyway have to support that ?
Please take this question up with Jesus Sanchez-Palencia on netdev
mailing list.
Yesterday, when I replied to this thread, which has Jesus in Cc, I got:

<jesus.sanchez-***@intel.com>: host mga14.intel.com[192.55.52.115] said:
550 #5.1.0 Address rejected. (in reply to RCPT TO command)

So I'm not sure what's going on, but Jesus is probably not receiving
all his e-mails.

Best regards,

Thomas
--
Thomas Petazzoni, CTO, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
Loading...