summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSakib Sajal <sakib.sajal@windriver.com>2020-07-21 16:39:12 -0400
committerSteve Sakoman <steve@sakoman.com>2020-07-27 12:15:56 -1000
commit92d8bba5405244ae2594abc1a012c08c74999ab4 (patch)
treea9494633faeddfee11e1c4a558bc458b98f70885
parent0590fbf6d76e1d0c4601529884c4c171be6e27af (diff)
downloadopenembedded-core-contrib-92d8bba5405244ae2594abc1a012c08c74999ab4.tar.gz
busybox: make hwclock compatible with glibc 2.31
settimeofday(2) has been deprecated as of glibc 2.31 which hwclock makes use of. This patch makes hwclock compatible with glibc v2.31 See patch for more details: busybox/0001-hwclock-make-glibc-2.31-compatible.patch Fixes [YOCTO #13981] Signed-off-by: Sakib Sajal <sakib.sajal@windriver.com> Signed-off-by: Steve Sakoman <steve@sakoman.com>
-rw-r--r--meta/recipes-core/busybox/busybox/0001-hwclock-make-glibc-2.31-compatible.patch83
-rw-r--r--meta/recipes-core/busybox/busybox_1.31.1.bb1
2 files changed, 84 insertions, 0 deletions
diff --git a/meta/recipes-core/busybox/busybox/0001-hwclock-make-glibc-2.31-compatible.patch b/meta/recipes-core/busybox/busybox/0001-hwclock-make-glibc-2.31-compatible.patch
new file mode 100644
index 0000000000..0a141cebd5
--- /dev/null
+++ b/meta/recipes-core/busybox/busybox/0001-hwclock-make-glibc-2.31-compatible.patch
@@ -0,0 +1,83 @@
+From 19a6baf0b79346deb383bbd2b5b825d59add7d5d Mon Sep 17 00:00:00 2001
+From: Sakib Sajal <sakib.sajal@windriver.com>
+Date: Fri, 17 Jul 2020 17:27:21 +0000
+Subject: [PATCH] hwclock: make glibc 2.31 compatible
+
+NEWS for glibc version 2.31
+===========================
+
+Deprecated and removed features, and other changes affecting compatibility:
+
+* The settimeofday function can still be used to set a system-wide
+ time zone when the operating system supports it. This is because
+ the Linux kernel reused the API, on some architectures, to describe
+ a system-wide time-zone-like offset between the software clock
+ maintained by the kernel, and the "RTC" clock that keeps time when
+ the system is shut down.
+
+ However, to reduce the odds of this offset being set by accident,
+ settimeofday can no longer be used to set the time and the offset
+ simultaneously. If both of its two arguments are non-null, the call
+ will fail (setting errno to EINVAL).
+
+ Callers attempting to set this offset should also be prepared for
+ the call to fail and set errno to ENOSYS; this already happens on
+ the Hurd and on some Linux architectures. The Linux kernel
+ maintainers are discussing a more principled replacement for the
+ reused API. After a replacement becomes available, we will change
+ settimeofday to fail with ENOSYS on all platforms when its 'tzp'
+ argument is not a null pointer.
+
+ settimeofday itself is obsolescent according to POSIX. Programs
+ that set the system time should use clock_settime and/or the adjtime
+ family of functions instead. We may cease to make settimeofday
+ available to newly linked binaries after there is a replacement for
+ Linux's time-zone-like offset API.
+
+hwclock had two calls to settimeofday, in functions to_sys_clock and
+set_system_clock_timezone, where both the arguments to settimeofday
+were valid (non-null).
+Therefore, split the call, once for timezone and once for timeval.
+
+Fixes #12756
+
+Upstream-Status: Pending
+
+Signed-off-by: Sakib Sajal <sakib.sajal@windriver.com>
+---
+ util-linux/hwclock.c | 12 ++++++++----
+ 1 file changed, 8 insertions(+), 4 deletions(-)
+
+diff --git a/util-linux/hwclock.c b/util-linux/hwclock.c
+index 29f5102..088ab3b 100644
+--- a/util-linux/hwclock.c
++++ b/util-linux/hwclock.c
+@@ -131,8 +131,10 @@ static void to_sys_clock(const char **pp_rtcname, int utc)
+
+ tv.tv_sec = read_rtc(pp_rtcname, NULL, utc);
+ tv.tv_usec = 0;
+- if (settimeofday(&tv, &tz))
+- bb_perror_msg_and_die("settimeofday");
++ if (settimeofday(NULL, &tz))
++ bb_perror_msg_and_die("settimeofday: timezone");
++ if (settimeofday(&tv, NULL))
++ bb_perror_msg_and_die("settimeofday: timeval");
+ }
+
+ static void from_sys_clock(const char **pp_rtcname, int utc)
+@@ -283,8 +285,10 @@ static void set_system_clock_timezone(int utc)
+ gettimeofday(&tv, NULL);
+ if (!utc)
+ tv.tv_sec += tz.tz_minuteswest * 60;
+- if (settimeofday(&tv, &tz))
+- bb_perror_msg_and_die("settimeofday");
++ if (settimeofday(NULL, &tz))
++ bb_perror_msg_and_die("settimeofday: timezone");
++ if (settimeofday(&tv, NULL))
++ bb_perror_msg_and_die("settimeofday: timeval");
+ }
+
+ //usage:#define hwclock_trivial_usage
+--
+2.27.0
+
diff --git a/meta/recipes-core/busybox/busybox_1.31.1.bb b/meta/recipes-core/busybox/busybox_1.31.1.bb
index a6b47027af..7563368287 100644
--- a/meta/recipes-core/busybox/busybox_1.31.1.bb
+++ b/meta/recipes-core/busybox/busybox_1.31.1.bb
@@ -49,6 +49,7 @@ SRC_URI = "https://busybox.net/downloads/busybox-${PV}.tar.bz2;name=tarball \
file://0001-Remove-stime-function-calls.patch \
file://0001-sysctl-ignore-EIO-of-stable_secret-below-proc-sys-ne.patch \
file://busybox-CVE-2018-1000500.patch \
+ file://0001-hwclock-make-glibc-2.31-compatible.patch \
"
SRC_URI_append_libc-musl = " file://musl.cfg "