diff -Nru virtualbox-6.1.10-dfsg/debian/changelog virtualbox-6.1.10-dfsg/debian/changelog --- virtualbox-6.1.10-dfsg/debian/changelog 2020-06-06 13:31:37.000000000 +0200 +++ virtualbox-6.1.10-dfsg/debian/changelog 2020-10-28 15:15:21.000000000 +0100 @@ -1,3 +1,13 @@ +virtualbox (6.1.10-dfsg-1~ubuntu1.20.04.2) focal; urgency=medium + + * Cherry pick 3 patches from virtualbox 6.1.12-dfsg-8 to fix builds of 5.8 + kernels (LP: #1901904) + - debian/patches/kernel-5.8-1.patch + - debian/patches/kernel-5.8-2.patch + - debian/patches/kernel-5.8-3.patch (adjusted to 6.1.14-dfsg-1) + + -- Stefan Bader Wed, 28 Oct 2020 15:15:21 +0100 + virtualbox (6.1.10-dfsg-1~ubuntu1.20.04.1) focal; urgency=medium * SRU the latest package for Ubuntu focal (LP: #1882106) diff -Nru virtualbox-6.1.10-dfsg/debian/control virtualbox-6.1.10-dfsg/debian/control --- virtualbox-6.1.10-dfsg/debian/control 2020-05-16 14:42:33.000000000 +0200 +++ virtualbox-6.1.10-dfsg/debian/control 2020-10-28 15:15:21.000000000 +0100 @@ -1,7 +1,8 @@ Source: virtualbox Section: contrib/misc Priority: optional -Maintainer: Debian Virtualbox Team +Maintainer: Ubuntu Developers +XSBC-Original-Maintainer: Debian Virtualbox Team Uploaders: Ritesh Raj Sarraf , Gianfranco Costamagna Build-Depends: bzip2, diff -Nru virtualbox-6.1.10-dfsg/debian/patches/kernel-5.8-1.patch virtualbox-6.1.10-dfsg/debian/patches/kernel-5.8-1.patch --- virtualbox-6.1.10-dfsg/debian/patches/kernel-5.8-1.patch 1970-01-01 01:00:00.000000000 +0100 +++ virtualbox-6.1.10-dfsg/debian/patches/kernel-5.8-1.patch 2020-10-28 15:14:04.000000000 +0100 @@ -0,0 +1,162 @@ +Origin: https://www.virtualbox.org/ticket/19644 +Index: vboxdrv/r0drv/linux/memobj-r0drv-linux.c +=================================================================== +--- src.orig/src/VBox/Runtime/r0drv/linux/memobj-r0drv-linux.c ++++ src/src/VBox/Runtime/r0drv/linux/memobj-r0drv-linux.c +@@ -222,9 +222,17 @@ static void *rtR0MemObjLinuxDoMmap(RTR3P + #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 5, 0) + ulAddr = vm_mmap(NULL, R3PtrFixed, cb, fLnxProt, MAP_SHARED | MAP_ANONYMOUS | MAP_FIXED, 0); + #else ++#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 8, 0) + down_write(&pTask->mm->mmap_sem); ++#else ++ down_write(&pTask->mm->mmap_lock); ++#endif + ulAddr = do_mmap(NULL, R3PtrFixed, cb, fLnxProt, MAP_SHARED | MAP_ANONYMOUS | MAP_FIXED, 0); ++#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 8, 0) + up_write(&pTask->mm->mmap_sem); ++#else ++ up_write(&pTask->mm->mmap_lock); ++#endif + #endif + } + else +@@ -232,9 +240,17 @@ static void *rtR0MemObjLinuxDoMmap(RTR3P + #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 5, 0) + ulAddr = vm_mmap(NULL, 0, cb, fLnxProt, MAP_SHARED | MAP_ANONYMOUS, 0); + #else ++#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 8, 0) + down_write(&pTask->mm->mmap_sem); ++#else ++ down_write(&pTask->mm->mmap_lock); ++#endif + ulAddr = do_mmap(NULL, 0, cb, fLnxProt, MAP_SHARED | MAP_ANONYMOUS, 0); ++#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 8, 0) + up_write(&pTask->mm->mmap_sem); ++#else ++ up_write(&pTask->mm->mmap_lock); ++#endif + #endif + if ( !(ulAddr & ~PAGE_MASK) + && (ulAddr & (uAlignment - 1))) +@@ -269,13 +285,29 @@ static void rtR0MemObjLinuxDoMunmap(void + Assert(pTask == current); RT_NOREF_PV(pTask); + vm_munmap((unsigned long)pv, cb); + #elif defined(USE_RHEL4_MUNMAP) ++#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 8, 0) + down_write(&pTask->mm->mmap_sem); ++#else ++ down_write(&pTask->mm->mmap_lock); ++#endif + do_munmap(pTask->mm, (unsigned long)pv, cb, 0); /* should it be 1 or 0? */ ++#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 8, 0) + up_write(&pTask->mm->mmap_sem); + #else ++ up_write(&pTask->mm->mmap_lock); ++#endif ++#else ++#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 8, 0) + down_write(&pTask->mm->mmap_sem); ++#else ++ down_write(&pTask->mm->mmap_lock); ++#endif + do_munmap(pTask->mm, (unsigned long)pv, cb); ++#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 8, 0) + up_write(&pTask->mm->mmap_sem); ++#else ++ up_write(&pTask->mm->mmap_lock); ++#endif + #endif + } + +@@ -593,7 +625,11 @@ DECLHIDDEN(int) rtR0MemObjNativeFree(RTR + size_t iPage; + Assert(pTask); + if (pTask && pTask->mm) +- down_read(&pTask->mm->mmap_sem); ++#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 8, 0) ++ down_read(&pTask->mm->mmap_sem); ++#else ++ down_read(&pTask->mm->mmap_lock); ++#endif + + iPage = pMemLnx->cPages; + while (iPage-- > 0) +@@ -608,7 +644,11 @@ DECLHIDDEN(int) rtR0MemObjNativeFree(RTR + } + + if (pTask && pTask->mm) +- up_read(&pTask->mm->mmap_sem); ++#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 8, 0) ++ up_read(&pTask->mm->mmap_sem); ++#else ++ up_read(&pTask->mm->mmap_lock); ++#endif + } + /* else: kernel memory - nothing to do here. */ + break; +@@ -1076,7 +1116,11 @@ DECLHIDDEN(int) rtR0MemObjNativeLockUser + papVMAs = (struct vm_area_struct **)RTMemAlloc(sizeof(*papVMAs) * cPages); + if (papVMAs) + { +- down_read(&pTask->mm->mmap_sem); ++#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 8, 0) ++ down_read(&pTask->mm->mmap_sem); ++#else ++ down_read(&pTask->mm->mmap_lock); ++#endif + + /* + * Get user pages. +@@ -1162,7 +1206,11 @@ DECLHIDDEN(int) rtR0MemObjNativeLockUser + papVMAs[rc]->vm_flags |= VM_DONTCOPY | VM_LOCKED; + } + +- up_read(&pTask->mm->mmap_sem); ++#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 8, 0) ++ up_read(&pTask->mm->mmap_sem); ++#else ++ up_read(&pTask->mm->mmap_lock); ++#endif + + RTMemFree(papVMAs); + +@@ -1189,7 +1237,11 @@ DECLHIDDEN(int) rtR0MemObjNativeLockUser + #endif + } + +- up_read(&pTask->mm->mmap_sem); ++#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 8, 0) ++ up_read(&pTask->mm->mmap_sem); ++#else ++ up_read(&pTask->mm->mmap_lock); ++#endif + + RTMemFree(papVMAs); + rc = VERR_LOCK_FAILED; +@@ -1604,7 +1656,11 @@ DECLHIDDEN(int) rtR0MemObjNativeMapUser( + const size_t cPages = (offSub + cbSub) >> PAGE_SHIFT; + size_t iPage; + +- down_write(&pTask->mm->mmap_sem); ++#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 8, 0) ++ down_write(&pTask->mm->mmap_sem); ++#else ++ down_write(&pTask->mm->mmap_lock); ++#endif + + rc = VINF_SUCCESS; + if (pMemLnxToMap->cPages) +@@ -1721,7 +1777,11 @@ DECLHIDDEN(int) rtR0MemObjNativeMapUser( + } + #endif /* CONFIG_NUMA_BALANCING */ + +- up_write(&pTask->mm->mmap_sem); ++#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 8, 0) ++ up_write(&pTask->mm->mmap_sem); ++#else ++ up_write(&pTask->mm->mmap_lock); ++#endif + + if (RT_SUCCESS(rc)) + { diff -Nru virtualbox-6.1.10-dfsg/debian/patches/kernel-5.8-2.patch virtualbox-6.1.10-dfsg/debian/patches/kernel-5.8-2.patch --- virtualbox-6.1.10-dfsg/debian/patches/kernel-5.8-2.patch 1970-01-01 01:00:00.000000000 +0100 +++ virtualbox-6.1.10-dfsg/debian/patches/kernel-5.8-2.patch 2020-10-28 15:14:20.000000000 +0100 @@ -0,0 +1,25 @@ +Origin: https://www.virtualbox.org/ticket/19644 +Index: vboxdrv/linux/SUPDrv-linux.c +=================================================================== +--- src.orig/src/VBox/HostDrivers/Support/linux/SUPDrv-linux.c ++++ src/src/VBox/HostDrivers/Support/linux/SUPDrv-linux.c +@@ -757,12 +757,19 @@ EXPORT_SYMBOL(SUPDrvLinuxIDC); + RTCCUINTREG VBOXCALL supdrvOSChangeCR4(RTCCUINTREG fOrMask, RTCCUINTREG fAndMask) + { + #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 20, 0) ++#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 8, 0) + RTCCUINTREG uOld = this_cpu_read(cpu_tlbstate.cr4); ++#else ++ RTCCUINTREG uOld = __read_cr4(); ++#endif + RTCCUINTREG uNew = (uOld & fAndMask) | fOrMask; + if (uNew != uOld) + { ++#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 8, 0) + this_cpu_write(cpu_tlbstate.cr4, uNew); + __write_cr4(uNew); ++#endif ++ ASMSetCR4(uNew); + } + #else + RTCCUINTREG uOld = ASMGetCR4(); diff -Nru virtualbox-6.1.10-dfsg/debian/patches/kernel-5.8-3.patch virtualbox-6.1.10-dfsg/debian/patches/kernel-5.8-3.patch --- virtualbox-6.1.10-dfsg/debian/patches/kernel-5.8-3.patch 1970-01-01 01:00:00.000000000 +0100 +++ virtualbox-6.1.10-dfsg/debian/patches/kernel-5.8-3.patch 2020-10-28 15:15:21.000000000 +0100 @@ -0,0 +1,23 @@ +Description: Fix build failures due to missing __get_vm_area/map_vm_area + Those interfaces were removed (again) in kernel 5.8. Alternatives are not + exported, so upstream went back to the pre-2.6.23 hack. + The original patch was adding code to use the alternatives which required + additional exports in the kernel. So this patch was adjusted to reflect + what virtualbox 6.1.14-dfsg-1 ended up with. +Origin: https://www.virtualbox.org/ticket/19644 +Last-Update: 2020-10-28 + +Index: virtualbox-6.1.10-dfsg/src/VBox/Runtime/r0drv/linux/alloc-r0drv-linux.c +=================================================================== +--- virtualbox-6.1.10-dfsg.orig/src/VBox/Runtime/r0drv/linux/alloc-r0drv-linux.c ++++ virtualbox-6.1.10-dfsg/src/VBox/Runtime/r0drv/linux/alloc-r0drv-linux.c +@@ -38,7 +38,8 @@ + + + #if (defined(RT_ARCH_AMD64) || defined(DOXYGEN_RUNNING)) && !defined(RTMEMALLOC_EXEC_HEAP) +-# if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 23) ++# if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 23) && \ ++ LINUX_VERSION_CODE < KERNEL_VERSION(5, 8, 0) + /** + * Starting with 2.6.23 we can use __get_vm_area and map_vm_area to allocate + * memory in the moduel range. This is preferrable to the exec heap below. diff -Nru virtualbox-6.1.10-dfsg/debian/patches/series virtualbox-6.1.10-dfsg/debian/patches/series --- virtualbox-6.1.10-dfsg/debian/patches/series 2020-06-05 22:57:12.000000000 +0200 +++ virtualbox-6.1.10-dfsg/debian/patches/series 2020-10-28 15:14:27.000000000 +0100 @@ -14,3 +14,6 @@ 35-libvdeplug-soname.patch 36-fix-vnc-version-string.patch 37-do-not-run-if-not-in-vm.patch +kernel-5.8-1.patch +kernel-5.8-2.patch +kernel-5.8-3.patch