From 5bb0800f7bd2f3a5bd93ff3c68f8a1a0b142858be220208208c8bfd936f5946f Mon Sep 17 00:00:00 2001 From: Larry Finger Date: Fri, 28 Feb 2020 17:06:30 +0000 Subject: [PATCH] Accepting request 780134 from home:lwfinger:branches:Virtualization - Kernel 5.6.0-rc3 introduced some fixes for the Y2038 problem. File "fixes_for_5.6" has been modified to handle these changes. OBS-URL: https://build.opensuse.org/request/show/780134 OBS-URL: https://build.opensuse.org/package/show/Virtualization/virtualbox?expand=0&rev=534 --- fixes_for_5.6.patch | 69 +++++++++++++++++++++++++++++++++++++++++++++ virtualbox.changes | 6 ++++ virtualbox.spec | 3 +- 3 files changed, 77 insertions(+), 1 deletion(-) diff --git a/fixes_for_5.6.patch b/fixes_for_5.6.patch index 23998d3..a731002 100644 --- a/fixes_for_5.6.patch +++ b/fixes_for_5.6.patch @@ -35,3 +35,72 @@ Index: VirtualBox-6.1.2/src/VBox/Runtime/r0drv/linux/memobj-r0drv-linux.c if (pMemLnx->Core.pv) { /** @todo fix protection. */ +Index: VirtualBox-6.1.2/include/iprt/time.h +=================================================================== +--- VirtualBox-6.1.2.orig/include/iprt/time.h ++++ VirtualBox-6.1.2/include/iprt/time.h +@@ -32,6 +32,24 @@ + #include + #include + #include ++#ifdef __KERNEL__ ++/* This header is used for both kernel- and user-space code. Beginning ++ * with v5.6.0-rc3 as part of the Y2038 conversion, several of the ++ * time handling macros were hidden. Thus, user- and kernel-space ++ * names are different. ++ */ ++#include ++#include ++#include ++#include ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 6, 0) ++#define timespec __kernel_old_timespec ++#define ktime_get_ts ktime_get_ts64 ++#undef time_t ++#define time_t ktime_t ++#define timeval __kernel_old_timeval ++#endif /* kernel version >= 5.6.0 */ ++#endif /* __KERNEL__ */ + + RT_C_DECLS_BEGIN + +@@ -433,12 +451,6 @@ DECLINLINE(PRTTIMESPEC) RTTimeSpecSetTim + } + + +-# ifdef _LINUX_TIME64_H +-DECLINLINE(PRTTIMESPEC) RTTimeSpecSetTimespec64(PRTTIMESPEC pTime, const struct timespec64 *pTimeval) +-{ +- return RTTimeSpecAddNano(RTTimeSpecSetSeconds(pTime, pTimeval->tv_sec), pTimeval->tv_nsec); +-} +-# endif + #endif /* various ways of detecting struct timespec */ + + +Index: VirtualBox-6.1.2/src/VBox/Runtime/r0drv/linux/time-r0drv-linux.c +=================================================================== +--- VirtualBox-6.1.2.orig/src/VBox/Runtime/r0drv/linux/time-r0drv-linux.c ++++ VirtualBox-6.1.2/src/VBox/Runtime/r0drv/linux/time-r0drv-linux.c +@@ -35,6 +35,10 @@ + #include + + ++DECLINLINE(PRTTIMESPEC) RTTimeSpecSetTimespec64(PRTTIMESPEC pTime, const struct timespec64 *pTimeval) ++{ ++ return RTTimeSpecAddNano(RTTimeSpecSetSeconds(pTime, pTimeval->tv_sec), pTimeval->tv_nsec); ++} + + DECLINLINE(uint64_t) rtTimeGetSystemNanoTS(void) + { +@@ -43,7 +47,11 @@ DECLINLINE(uint64_t) rtTimeGetSystemNano + * Use ktime_get_ts, this is also what clock_gettime(CLOCK_MONOTONIC,) is using. + */ + uint64_t u64; ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 6, 0) ++ struct timespec64 Ts; ++#else + struct timespec Ts; ++#endif + ktime_get_ts(&Ts); + u64 = Ts.tv_sec * RT_NS_1SEC_64 + Ts.tv_nsec; + return u64; diff --git a/virtualbox.changes b/virtualbox.changes index 5ecb06f..8f62b32 100644 --- a/virtualbox.changes +++ b/virtualbox.changes @@ -1,3 +1,9 @@ +------------------------------------------------------------------- +Thu Feb 27 18:38:46 UTC 2020 - Larry Finger + +- Kernel 5.6.0-rc3 introduced some fixes for the Y2038 problem. File "fixes_for_5.6" + has been modified to handle these changes. + ------------------------------------------------------------------- Sat Feb 15 02:32:06 UTC 2020 - Larry Finger diff --git a/virtualbox.spec b/virtualbox.spec index 58b19d4..46ecaad 100644 --- a/virtualbox.spec +++ b/virtualbox.spec @@ -453,8 +453,9 @@ as an "extpack" for VirtualBox. The implementation is licensed under GPL. %endif %patch133 -p1 %patch134 -p1 +%if 0%{?suse_version} > 1500 %patch135 -p1 - +%endif # make VB UI background colors look sane again %patch999 -p1