1
0
forked from pool/virtualbox

Accepting request 507206 from Virtualization

Fix missing global for 32-bit version with gcc7. (bsc#1046571).
  Fix missing frame buffer cleanup - private communication from Oracle - adds file "fix_KMS_support.patch".

OBS-URL: https://build.opensuse.org/request/show/507206
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/virtualbox?expand=0&rev=135
This commit is contained in:
Dominique Leuenberger 2017-07-04 09:54:03 +00:00 committed by Git OBS Bridge
commit f1883d7678
12 changed files with 559 additions and 46 deletions

14
fix_KMS_support.patch Normal file
View File

@ -0,0 +1,14 @@
Index: VirtualBox-5.1.22/src/VBox/Additions/linux/drm/vbox_fb.c
===================================================================
--- VirtualBox-5.1.22.orig/src/VBox/Additions/linux/drm/vbox_fb.c
+++ VirtualBox-5.1.22/src/VBox/Additions/linux/drm/vbox_fb.c
@@ -409,6 +409,9 @@ static void vbox_fbdev_destroy(struct dr
LogFunc(("vboxvideo: %d\n", __LINE__));
if (fbdev->helper.fbdev) {
info = fbdev->helper.fbdev;
+#ifdef CONFIG_FB_DEFERRED_IO
+ fb_deferred_io_cleanup(info);
+#endif
unregister_framebuffer(info);
if (info->cmap.len)
fb_dealloc_cmap(&info->cmap);

7
fix_usb_rules.sh Normal file
View File

@ -0,0 +1,7 @@
#!/bin/bash
# script to disable USB passthru in /etc/udev/rules.d/60-vboxdrv.rules
# if already disabled, clear the comment character
sed -i 's/#SUBSYSTEM==\"usb/SUBSYSTEM==\"usb/' /etc/udev/rules.d/60-vboxdrv.rules
# now comment the usb lines
sed -i 's/SUBSYSTEM==\"usb/#SUBSYSTEM==\"usb/' /etc/udev/rules.d/60-vboxdrv.rules

View File

@ -1,8 +1,8 @@
Index: VirtualBox-5.1.6/src/VBox/Additions/linux/drm/vbox_ttm.c
Index: VirtualBox-5.1.22/src/VBox/Additions/linux/drm/vbox_ttm.c
===================================================================
--- VirtualBox-5.1.6.orig/src/VBox/Additions/linux/drm/vbox_ttm.c
+++ VirtualBox-5.1.6/src/VBox/Additions/linux/drm/vbox_ttm.c
@@ -229,7 +229,6 @@ static int vbox_bo_move(struct ttm_buffe
--- VirtualBox-5.1.22.orig/src/VBox/Additions/linux/drm/vbox_ttm.c
+++ VirtualBox-5.1.22/src/VBox/Additions/linux/drm/vbox_ttm.c
@@ -231,7 +231,6 @@ static int vbox_bo_move(struct ttm_buffe
return r;
}
@ -10,10 +10,10 @@ Index: VirtualBox-5.1.6/src/VBox/Additions/linux/drm/vbox_ttm.c
static void vbox_ttm_backend_destroy(struct ttm_tt *tt)
{
ttm_tt_fini(tt);
Index: VirtualBox-5.1.6/src/VBox/Runtime/r0drv/linux/alloc-r0drv-linux.c
Index: VirtualBox-5.1.22/src/VBox/Runtime/r0drv/linux/alloc-r0drv-linux.c
===================================================================
--- VirtualBox-5.1.6.orig/src/VBox/Runtime/r0drv/linux/alloc-r0drv-linux.c
+++ VirtualBox-5.1.6/src/VBox/Runtime/r0drv/linux/alloc-r0drv-linux.c
--- VirtualBox-5.1.22.orig/src/VBox/Runtime/r0drv/linux/alloc-r0drv-linux.c
+++ VirtualBox-5.1.22/src/VBox/Runtime/r0drv/linux/alloc-r0drv-linux.c
@@ -35,7 +35,7 @@
#include <iprt/assert.h>
#include <iprt/err.h>

View File

@ -1,10 +1,8 @@
Index: a/src/apps/Makefile.kmk
Index: VirtualBox-5.1.22/src/apps/Makefile.kmk
===================================================================
--- a/src/apps/Makefile.kmk (revision 58576)
+++ b/src/apps/Makefile.kmk (working copy)
@@ -34,7 +34,9 @@
endif
endif
--- VirtualBox-5.1.22.orig/src/apps/Makefile.kmk
+++ VirtualBox-5.1.22/src/apps/Makefile.kmk
@@ -31,5 +31,7 @@ endif
include $(PATH_SUB_CURRENT)/VBoxPermissionMessage/Makefile.kmk
@ -12,10 +10,10 @@ Index: a/src/apps/Makefile.kmk
+
include $(FILE_KBUILD_SUB_FOOTER)
Index: a/src/apps/VBoxUSB_DevRules/Makefile.kmk
Index: VirtualBox-5.1.22/src/apps/VBoxUSB_DevRules/Makefile.kmk
===================================================================
--- a/src/apps/VBoxUSB_DevRules/Makefile.kmk (revision 0)
+++ b/src/apps/VBoxUSB_DevRules/Makefile.kmk (working copy)
--- /dev/null
+++ VirtualBox-5.1.22/src/apps/VBoxUSB_DevRules/Makefile.kmk
@@ -0,0 +1,33 @@
+# $Id: Makefile.kmk 28800 2010-04-27 08:22:32Z vboxsync $
+## @file
@ -50,21 +48,34 @@ Index: a/src/apps/VBoxUSB_DevRules/Makefile.kmk
+include $(KBUILD_PATH)/subfooter.kmk
+
+
Index: a/src/apps/VBoxUSB_DevRules/VBoxUSB_DevRules.cpp
Index: VirtualBox-5.1.22/src/apps/VBoxUSB_DevRules/VBoxUSB_DevRules.cpp
===================================================================
--- a/src/apps/VBoxUSB_DevRules/VBoxUSB_DevRules.cpp (revision 0)
+++ b/src/apps/VBoxUSB_DevRules/VBoxUSB_DevRules.cpp (working copy)
@@ -0,0 +1,13 @@
--- /dev/null
+++ VirtualBox-5.1.22/src/apps/VBoxUSB_DevRules/VBoxUSB_DevRules.cpp
@@ -0,0 +1,26 @@
+#include <QtWidgets/QApplication>
+#include <QtWidgets/QMessageBox>
+#include <QtWidgets/QPushButton>
+
+int main(int argc, char *argv[])
+{
+ QApplication app(argc, argv);
+ QMessageBox msgBox;
+ msgBox.setWindowTitle(QObject::tr("USB Rules and Permissions !"));
+ msgBox.setText(QObject::tr("USB passthru opens a security hole. Please read \n\nhttps://bugzilla.novell.com/show_bug.cgi?id=664520\n\nto understand the problem. If you really want/need to use USB passthru and are willing to accept the security risk, then do nothing. To plug the security hole, remove all 'usb' lines from /etc/udev/rules.d/60-vboxdrv.rules.\n\nThis message will not be seen again!"));
+ int ret = msgBox.exec();
+ QPushButton *myYesButton = msgBox.addButton("Enable", QMessageBox::YesRole);
+ QPushButton *myNoButton = msgBox.addButton("Disable", QMessageBox::NoRole);
+ msgBox.setWindowTitle(QObject::tr("USB Rules and Permissions !"));
+ msgBox.setText(QObject::tr("USB passthru opens a security hole. "
+ "Please read \nhttps://bugzilla.novell.com/show_bug.cgi?id=664520\n"
+ "to understand the problem.\n\nWe regard USB passthru to be extremely useful and worth the security risk. "
+ "thus the code defaults to enabling this feature. If you agree that the risk is acceptible, then click 'Enable'.\n"
+ "You will not be asked this question again when VB is updated. If you later change your mind, run 'rm ~/.vbox/*'\n\n"
+ "If you wish to disable USB passthru to plug the security hole, then click 'Disable'. "
+ "You will be asked for the system password, and /etc/udev/rules.d/60-vboxdrv.rules will be changed.\n"
+ "These changes cannot be preserved through VB updates, thus this screen will be displayed again at that time."));
+ msgBox.exec();
+ app.quit();
+ return 0;
+ if (msgBox.clickedButton() == myYesButton)
+ return 0;
+ return 1;
+}
+

View File

@ -16,7 +16,7 @@ Index: VirtualBox-5.1.22/src/VBox/Additions/linux/installer/vboxadd.sh
### END INIT INFO
## @todo This file duplicates a lot of script with vboxdrv.sh. When making
@@ -108,7 +111,6 @@ fail()
@@ -108,11 +111,10 @@ fail()
dev=/dev/vboxguest
userdev=/dev/vboxuser
@ -24,6 +24,11 @@ Index: VirtualBox-5.1.22/src/VBox/Additions/linux/installer/vboxadd.sh
owner=vboxadd
group=1
-if test -r $config; then
+if [[ -r $config ]] ; then
. $config
else
fail "Configuration file $config not found"
@@ -162,12 +164,6 @@ do_vboxguest_non_udev()
fail "Cannot create device $dev with major $maj and minor $min"
}

View File

@ -25,3 +25,251 @@ Index: VirtualBox-5.1.22/src/VBox/Devices/PC/ipxe/src/arch/i386/interface/pxe/px
}
/* PXENV_START_UNDI
Index: VirtualBox-5.1.22/src/VBox/Additions/common/VBoxGuest/linux/files_vboxguest
===================================================================
--- VirtualBox-5.1.22.orig/src/VBox/Additions/common/VBoxGuest/linux/files_vboxguest
+++ VirtualBox-5.1.22/src/VBox/Additions/common/VBoxGuest/linux/files_vboxguest
@@ -54,6 +54,7 @@ FILES_VBOXGUEST_NOBIN=" \
${PATH_ROOT}/include/iprt/time.h=>include/iprt/time.h \
${PATH_ROOT}/include/iprt/timer.h=>include/iprt/timer.h \
${PATH_ROOT}/include/iprt/types.h=>include/iprt/types.h \
+ ${PATH_ROOT}/include/iprt/uint64.h=>include/iprt/uint64.h \
${PATH_ROOT}/include/iprt/uni.h=>include/iprt/uni.h \
${PATH_ROOT}/include/iprt/utf16.h=>include/iprt/utf16.h \
${PATH_ROOT}/include/iprt/x86.h=>include/iprt/x86.h \
@@ -113,6 +114,7 @@ FILES_VBOXGUEST_NOBIN=" \
${PATH_ROOT}/src/VBox/Runtime/common/math/gcc/qdivrem.c=>common/math/gcc/qdivrem.c \
${PATH_ROOT}/src/VBox/Runtime/common/math/gcc/quad.h=>common/math/gcc/quad.h \
${PATH_ROOT}/src/VBox/Runtime/common/math/gcc/udivdi3.c=>common/math/gcc/udivdi3.c \
+ ${PATH_ROOT}/src/VBox/Runtime/common/math/gcc/udivmoddi4.c=>common/math/gcc/udivmoddi4.c \
${PATH_ROOT}/src/VBox/Runtime/common/math/gcc/umoddi3.c=>common/math/gcc/umoddi3.c \
${PATH_ROOT}/src/VBox/Runtime/common/misc/RTAssertMsg1Weak.cpp=>common/misc/RTAssertMsg1Weak.c \
${PATH_ROOT}/src/VBox/Runtime/common/misc/RTAssertMsg2.cpp=>common/misc/RTAssertMsg2.c \
Index: VirtualBox-5.1.22/src/VBox/Additions/common/VBoxGuest/linux/Makefile
===================================================================
--- VirtualBox-5.1.22.orig/src/VBox/Additions/common/VBoxGuest/linux/Makefile
+++ VirtualBox-5.1.22/src/VBox/Additions/common/VBoxGuest/linux/Makefile
@@ -100,6 +100,7 @@ MOD_OBJS += \
common/math/gcc/divdi3.o \
common/math/gcc/moddi3.o \
common/math/gcc/udivdi3.o \
+ common/math/gcc/udivmoddi4.o \
common/math/gcc/umoddi3.o \
common/math/gcc/qdivrem.o
endif
Index: VirtualBox-5.1.22/src/VBox/Additions/linux/sharedfolders/files_vboxsf
===================================================================
--- VirtualBox-5.1.22.orig/src/VBox/Additions/linux/sharedfolders/files_vboxsf
+++ VirtualBox-5.1.22/src/VBox/Additions/linux/sharedfolders/files_vboxsf
@@ -38,6 +38,7 @@ FILES_VBOXSF_NOBIN=" \
${PATH_ROOT}/include/iprt/string.h=>include/iprt/string.h \
${PATH_ROOT}/include/iprt/time.h=>include/iprt/time.h \
${PATH_ROOT}/include/iprt/types.h=>include/iprt/types.h \
+ ${PATH_ROOT}/include/iprt/uint64.h=>include/iprt/uint64.h \
${PATH_ROOT}/include/iprt/uni.h=>include/iprt/uni.h \
${PATH_ROOT}/include/iprt/utf16.h=>include/iprt/utf16.h \
${PATH_ROOT}/include/VBox/cdefs.h=>include/VBox/cdefs.h \
@@ -73,6 +74,7 @@ FILES_VBOXSF_NOBIN=" \
${PATH_ROOT}/src/VBox/Runtime/common/math/gcc/qdivrem.c=>qdivrem.c \
${PATH_ROOT}/src/VBox/Runtime/common/math/gcc/quad.h=>quad.h \
${PATH_ROOT}/src/VBox/Runtime/common/math/gcc/udivdi3.c=>udivdi3.c \
+ ${PATH_ROOT}/src/VBox/Runtime/common/math/gcc/udivmoddi4.c=>udivmoddi4.c \
${PATH_ROOT}/src/VBox/Runtime/common/math/gcc/umoddi3.c=>umoddi3.c \
${PATH_ROOT}/src/VBox/Runtime/r0drv/linux/the-linux-kernel.h=>r0drv/linux/the-linux-kernel.h \
${PATH_ROOT}/src/VBox/Additions/linux/sharedfolders/Makefile.module=>Makefile \
Index: VirtualBox-5.1.22/src/VBox/Additions/linux/sharedfolders/Makefile.module
===================================================================
--- VirtualBox-5.1.22.orig/src/VBox/Additions/linux/sharedfolders/Makefile.module
+++ VirtualBox-5.1.22/src/VBox/Additions/linux/sharedfolders/Makefile.module
@@ -38,6 +38,7 @@ MOD_OBJS += \
divdi3.o \
moddi3.o \
udivdi3.o \
+ udivmoddi4.o \
umoddi3.o \
qdivrem.o
endif
Index: VirtualBox-5.1.22/src/VBox/HostDrivers/Support/linux/files_vboxdrv
===================================================================
--- VirtualBox-5.1.22.orig/src/VBox/HostDrivers/Support/linux/files_vboxdrv
+++ VirtualBox-5.1.22/src/VBox/HostDrivers/Support/linux/files_vboxdrv
@@ -65,6 +65,7 @@ FILES_VBOXDRV_NOBIN=" \
${PATH_ROOT}/include/iprt/timer.h=>include/iprt/timer.h \
${PATH_ROOT}/include/iprt/types.h=>include/iprt/types.h \
${PATH_ROOT}/include/iprt/uint128.h=>include/iprt/uint128.h \
+ ${PATH_ROOT}/include/iprt/uint64.h=>include/iprt/uint64.h \
${PATH_ROOT}/include/iprt/uni.h=>include/iprt/uni.h \
${PATH_ROOT}/include/iprt/utf16.h=>include/iprt/utf16.h \
${PATH_ROOT}/include/iprt/uuid.h=>include/iprt/uuid.h \
@@ -109,6 +110,7 @@ FILES_VBOXDRV_NOBIN=" \
${PATH_ROOT}/src/VBox/Runtime/common/math/gcc/qdivrem.c=>math/gcc/qdivrem.c \
${PATH_ROOT}/src/VBox/Runtime/common/math/gcc/quad.h=>math/gcc/quad.h \
${PATH_ROOT}/src/VBox/Runtime/common/math/gcc/udivdi3.c=>math/gcc/udivdi3.c \
+ ${PATH_ROOT}/src/VBox/Runtime/common/math/gcc/udivmoddi4.c=>math/gcc/udivmoddi4.c \
${PATH_ROOT}/src/VBox/Runtime/common/math/gcc/umoddi3.c=>math/gcc/umoddi3.c \
${PATH_ROOT}/src/VBox/Runtime/common/misc/RTAssertMsg1Weak.cpp=>common/misc/RTAssertMsg1Weak.c \
${PATH_ROOT}/src/VBox/Runtime/common/misc/RTAssertMsg2.cpp=>common/misc/RTAssertMsg2.c \
Index: VirtualBox-5.1.22/src/VBox/HostDrivers/Support/linux/Makefile
===================================================================
--- VirtualBox-5.1.22.orig/src/VBox/HostDrivers/Support/linux/Makefile
+++ VirtualBox-5.1.22/src/VBox/HostDrivers/Support/linux/Makefile
@@ -158,6 +158,7 @@ OBJS += math/gcc/divdi3.o \
math/gcc/moddi3.o \
math/gcc/qdivrem.o \
math/gcc/udivdi3.o \
+ math/gcc/udivmoddi4.o \
math/gcc/divdi3.o \
math/gcc/umoddi3.o
endif
Index: VirtualBox-5.1.22/src/VBox/HostDrivers/VBoxNetAdp/linux/files_vboxnetadp
===================================================================
--- VirtualBox-5.1.22.orig/src/VBox/HostDrivers/VBoxNetAdp/linux/files_vboxnetadp
+++ VirtualBox-5.1.22/src/VBox/HostDrivers/VBoxNetAdp/linux/files_vboxnetadp
@@ -49,6 +49,7 @@ VBOX_VBOXNETADP_SOURCES=" \
${PATH_ROOT}/include/iprt/time.h=>include/iprt/time.h \
${PATH_ROOT}/include/iprt/timer.h=>include/iprt/timer.h \
${PATH_ROOT}/include/iprt/types.h=>include/iprt/types.h \
+ ${PATH_ROOT}/include/iprt/uint64.h=>include/iprt/uint64.h \
${PATH_ROOT}/include/iprt/uni.h=>include/iprt/uni.h \
${PATH_ROOT}/include/iprt/utf16.h=>include/iprt/utf16.h \
${PATH_ROOT}/include/iprt/uuid.h=>include/iprt/uuid.h \
@@ -70,6 +71,7 @@ VBOX_VBOXNETADP_SOURCES=" \
${PATH_ROOT}/src/VBox/Runtime/common/math/gcc/qdivrem.c=>math/gcc/qdivrem.c \
${PATH_ROOT}/src/VBox/Runtime/common/math/gcc/quad.h=>math/gcc/quad.h \
${PATH_ROOT}/src/VBox/Runtime/common/math/gcc/udivdi3.c=>math/gcc/udivdi3.c \
+ ${PATH_ROOT}/src/VBox/Runtime/common/math/gcc/udivmoddi4.c=>math/gcc/udivmoddi4.c \
${PATH_ROOT}/src/VBox/Runtime/common/math/gcc/umoddi3.c=>math/gcc/umoddi3.c \
${PATH_ROOT}/src/VBox/Runtime/common/string/strformat.cpp=>common/string/strformat.c \
${PATH_ROOT}/src/VBox/Runtime/common/string/strformatrt.cpp=>common/string/strformatrt.c \
Index: VirtualBox-5.1.22/src/VBox/HostDrivers/VBoxNetAdp/linux/Makefile
===================================================================
--- VirtualBox-5.1.22.orig/src/VBox/HostDrivers/VBoxNetAdp/linux/Makefile
+++ VirtualBox-5.1.22/src/VBox/HostDrivers/VBoxNetAdp/linux/Makefile
@@ -68,6 +68,7 @@ OBJS += math/gcc/divdi3.o \
math/gcc/moddi3.o \
math/gcc/qdivrem.o \
math/gcc/udivdi3.o \
+ math/gcc/udivmoddi4.o \
math/gcc/divdi3.o \
math/gcc/umoddi3.o
endif
Index: VirtualBox-5.1.22/src/VBox/HostDrivers/VBoxNetFlt/linux/files_vboxnetflt
===================================================================
--- VirtualBox-5.1.22.orig/src/VBox/HostDrivers/VBoxNetFlt/linux/files_vboxnetflt
+++ VirtualBox-5.1.22/src/VBox/HostDrivers/VBoxNetFlt/linux/files_vboxnetflt
@@ -49,6 +49,7 @@ VBOX_VBOXNETFLT_SOURCES=" \
${PATH_ROOT}/include/iprt/time.h=>include/iprt/time.h \
${PATH_ROOT}/include/iprt/timer.h=>include/iprt/timer.h \
${PATH_ROOT}/include/iprt/types.h=>include/iprt/types.h \
+ ${PATH_ROOT}/include/iprt/uint64.h=>include/iprt/uint64.h \
${PATH_ROOT}/include/iprt/uni.h=>include/iprt/uni.h \
${PATH_ROOT}/include/iprt/utf16.h=>include/iprt/utf16.h \
${PATH_ROOT}/include/iprt/uuid.h=>include/iprt/uuid.h \
@@ -77,6 +78,7 @@ VBOX_VBOXNETFLT_SOURCES=" \
${PATH_ROOT}/src/VBox/Runtime/common/math/gcc/qdivrem.c=>math/gcc/qdivrem.c \
${PATH_ROOT}/src/VBox/Runtime/common/math/gcc/quad.h=>math/gcc/quad.h \
${PATH_ROOT}/src/VBox/Runtime/common/math/gcc/udivdi3.c=>math/gcc/udivdi3.c \
+ ${PATH_ROOT}/src/VBox/Runtime/common/math/gcc/udivmoddi4.c=>math/gcc/udivmoddi4.c \
${PATH_ROOT}/src/VBox/Runtime/common/math/gcc/umoddi3.c=>math/gcc/umoddi3.c \
${PATH_ROOT}/src/VBox/Runtime/r0drv/linux/the-linux-kernel.h=>r0drv/linux/the-linux-kernel.h \
${PATH_OUT}/version-generated.h=>version-generated.h \
Index: VirtualBox-5.1.22/src/VBox/HostDrivers/VBoxNetFlt/linux/Makefile
===================================================================
--- VirtualBox-5.1.22.orig/src/VBox/HostDrivers/VBoxNetFlt/linux/Makefile
+++ VirtualBox-5.1.22/src/VBox/HostDrivers/VBoxNetFlt/linux/Makefile
@@ -72,6 +72,7 @@ OBJS += math/gcc/divdi3.o \
math/gcc/moddi3.o \
math/gcc/qdivrem.o \
math/gcc/udivdi3.o \
+ math/gcc/udivmoddi4.o \
math/gcc/divdi3.o \
math/gcc/umoddi3.o
endif
Index: VirtualBox-5.1.22/src/VBox/HostDrivers/VBoxPci/linux/files_vboxpci
===================================================================
--- VirtualBox-5.1.22.orig/src/VBox/HostDrivers/VBoxPci/linux/files_vboxpci
+++ VirtualBox-5.1.22/src/VBox/HostDrivers/VBoxPci/linux/files_vboxpci
@@ -48,6 +48,7 @@ VBOX_VBOXPCI_SOURCES=" \
${PATH_ROOT}/include/iprt/time.h=>include/iprt/time.h \
${PATH_ROOT}/include/iprt/timer.h=>include/iprt/timer.h \
${PATH_ROOT}/include/iprt/types.h=>include/iprt/types.h \
+ ${PATH_ROOT}/include/iprt/uint64.h=>include/iprt/uint64.h \
${PATH_ROOT}/include/iprt/uni.h=>include/iprt/uni.h \
${PATH_ROOT}/include/iprt/utf16.h=>include/iprt/utf16.h \
${PATH_ROOT}/include/iprt/uuid.h=>include/iprt/uuid.h \
@@ -75,6 +76,7 @@ VBOX_VBOXPCI_SOURCES=" \
${PATH_ROOT}/src/VBox/Runtime/common/math/gcc/qdivrem.c=>math/gcc/qdivrem.c \
${PATH_ROOT}/src/VBox/Runtime/common/math/gcc/quad.h=>math/gcc/quad.h \
${PATH_ROOT}/src/VBox/Runtime/common/math/gcc/udivdi3.c=>math/gcc/udivdi3.c \
+ ${PATH_ROOT}/src/VBox/Runtime/common/math/gcc/udivmoddi4.c=>math/gcc/udivmoddi4.c \
${PATH_ROOT}/src/VBox/Runtime/common/math/gcc/umoddi3.c=>math/gcc/umoddi3.c \
${PATH_ROOT}/src/VBox/Runtime/r0drv/linux/the-linux-kernel.h=>r0drv/linux/the-linux-kernel.h \
${PATH_OUT}/version-generated.h=>version-generated.h \
Index: VirtualBox-5.1.22/src/VBox/HostDrivers/VBoxPci/linux/Makefile
===================================================================
--- VirtualBox-5.1.22.orig/src/VBox/HostDrivers/VBoxPci/linux/Makefile
+++ VirtualBox-5.1.22/src/VBox/HostDrivers/VBoxPci/linux/Makefile
@@ -72,6 +72,7 @@ OBJS += math/gcc/divdi3.o \
math/gcc/moddi3.o \
math/gcc/qdivrem.o \
math/gcc/udivdi3.o \
+ math/gcc/udivmoddi4.o \
math/gcc/divdi3.o \
math/gcc/umoddi3.o
endif
Index: VirtualBox-5.1.22/src/VBox/Runtime/common/math/gcc/udivmoddi4.c
===================================================================
--- /dev/null
+++ VirtualBox-5.1.22/src/VBox/Runtime/common/math/gcc/udivmoddi4.c
@@ -0,0 +1,51 @@
+/* $Id$ */
+/** @file
+ * IPRT - __udivmoddi4 implementation
+ */
+
+/*
+ * Copyright (C) 2006-2016 Oracle Corporation
+ *
+ * This file is part of VirtualBox Open Source Edition (OSE), as
+ * available from http://www.virtualbox.org. This file is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU
+ * General Public License (GPL) as published by the Free Software
+ * Foundation, in version 2 as it comes in the "COPYING" file of the
+ * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ *
+ * The contents of this file may alternatively be used under the terms
+ * of the Common Development and Distribution License Version 1.0
+ * (CDDL) only, as it comes in the "COPYING.CDDL" file of the
+ * VirtualBox OSE distribution, in which case the provisions of the
+ * CDDL are applicable instead of those of the GPL.
+ *
+ * You may elect to license modified versions of this file under the
+ * terms and conditions of either the GPL or the CDDL or both.
+ */
+
+#include <iprt/stdint.h>
+#include <iprt/uint64.h>
+
+/**
+ * __udivmoddi4() implementation to satisfy external references from 32-bit
+ * code generated by gcc-7 or later.
+ *
+ * @param u64A The divident value.
+ * @param u64B The divisor value.
+ * @param pu64R A pointer to the reminder. May be NULL.
+ * @returns u64A / u64B
+ */
+uint64_t __udivmoddi4(uint64_t u64A, uint64_t u64B, uint64_t *pu64R)
+{
+ RTUINT64U Divident;
+ RTUINT64U Divisor;
+ RTUINT64U Quotient;
+ RTUINT64U Reminder;
+ Divident.u = u64A;
+ Divisor.u = u64B;
+ RTUInt64DivRem(&Quotient, &Reminder, &Divident, &Divisor);
+ if (pu64R)
+ *pu64R = Reminder.u;
+ return Quotient.u;
+}

View File

@ -0,0 +1,108 @@
Index: VirtualBox-5.1.22/src/VBox/HostDrivers/Support/linux/SUPDrv-linux.c
===================================================================
--- VirtualBox-5.1.22.orig/src/VBox/HostDrivers/Support/linux/SUPDrv-linux.c
+++ VirtualBox-5.1.22/src/VBox/HostDrivers/Support/linux/SUPDrv-linux.c
@@ -1397,7 +1397,7 @@ RTDECL(int) SUPR0Printf(const char *pszF
SUPR0DECL(uint32_t) SUPR0GetKernelFeatures(void)
{
uint32_t fFlags = 0;
-#ifdef CONFIG_PAX_KERNEXEC
+#if defined(CONFIG_PAX_KERNEXEC) || LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0)
fFlags |= SUPKERNELFEATURES_GDT_READ_ONLY;
#endif
#if defined(VBOX_STRICT) || defined(VBOX_WITH_EFLAGS_AC_SET_IN_VBOXDRV)
Index: VirtualBox-5.1.22/src/VBox/Runtime/r0drv/linux/alloc-r0drv-linux.c
===================================================================
--- VirtualBox-5.1.22.orig/src/VBox/Runtime/r0drv/linux/alloc-r0drv-linux.c
+++ VirtualBox-5.1.22/src/VBox/Runtime/r0drv/linux/alloc-r0drv-linux.c
@@ -36,6 +36,9 @@
#include <iprt/err.h>
#include "r0drv/alloc-r0drv.h"
#include <linux/kmemleak.h>
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0)
+#include <asm/set_memory.h>
+#endif
#if (defined(RT_ARCH_AMD64) || defined(DOXYGEN_RUNNING)) && !defined(RTMEMALLOC_EXEC_HEAP)
# if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 23)
Index: VirtualBox-5.1.22/src/VBox/Runtime/r0drv/linux/memobj-r0drv-linux.c
===================================================================
--- VirtualBox-5.1.22.orig/src/VBox/Runtime/r0drv/linux/memobj-r0drv-linux.c
+++ VirtualBox-5.1.22/src/VBox/Runtime/r0drv/linux/memobj-r0drv-linux.c
@@ -899,6 +899,9 @@ static struct page *rtR0MemObjLinuxVirtT
unsigned long pfn;
struct page *pPage;
pte_t *pEntry;
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0)
+ p4d_t p4d;
+#endif
union
{
pgd_t Global;
@@ -917,9 +920,18 @@ static struct page *rtR0MemObjLinuxVirtT
u.Global = *pgd_offset(current->active_mm, ulAddr);
if (RT_UNLIKELY(pgd_none(u.Global)))
return NULL;
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0)
+ p4d = *p4d_offset(&u.Global, ulAddr);
+ if (RT_UNLIKELY(p4d_none(p4d) || p4d_large(p4d) || !p4d_present(p4d)))
+ return NULL;
+#endif
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 11)
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0)
+ u.Upper = *pud_offset(&p4d, ulAddr);
+#else
u.Upper = *pud_offset(&u.Global, ulAddr);
+#endif
if (RT_UNLIKELY(pud_none(u.Upper)))
return NULL;
# if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 25)
@@ -1463,13 +1475,23 @@ static int rtR0MemObjLinuxFixPte(struct
{
int rc = -ENOMEM;
pgd_t *pgd;
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0)
+ p4d_t *p4d;
+#endif
spin_lock(&mm->page_table_lock);
pgd = pgd_offset(mm, ulAddr);
if (!pgd_none(*pgd) && !pgd_bad(*pgd))
{
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0)
+ p4d = p4d_offset(*pgd, ulAddr);
+ if (p4d_none(*p4d))
+ goto exit;
+ pmd_t *pmd = pmd_offset(p4d, ulAddr);
+#else
pmd_t *pmd = pmd_offset(pgd, ulAddr);
+#endif
if (!pmd_none(*pmd))
{
pte_t *ptep = pte_offset_map(pmd, ulAddr);
@@ -1487,6 +1509,9 @@ static int rtR0MemObjLinuxFixPte(struct
}
}
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0)
+exit:
+#endif
spin_unlock(&mm->page_table_lock);
return rc;
}
Index: VirtualBox-5.1.22/src/VBox/Runtime/r0drv/linux/the-linux-kernel.h
===================================================================
--- VirtualBox-5.1.22.orig/src/VBox/Runtime/r0drv/linux/the-linux-kernel.h
+++ VirtualBox-5.1.22/src/VBox/Runtime/r0drv/linux/the-linux-kernel.h
@@ -320,6 +320,9 @@ DECLINLINE(unsigned long) msecs_to_jiffi
#endif
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 25)
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0)
+#include <asm/cacheflush.h>
+#endif
# define MY_SET_PAGES_EXEC(pPages, cPages) set_pages_x(pPages, cPages)
# define MY_SET_PAGES_NOEXEC(pPages, cPages) set_pages_nx(pPages, cPages)
#else

View File

@ -5,15 +5,22 @@
#
# This script is part of the openSUSE VirtualBox package
#
SOURCE="/usr/src/kernel-modules/virtualbox"
SOURCE="/usr/src/kernel-modules/virtualbox/src"
LOGFILE="/var/log/virtualbox.log"
INCLUDE="/lib/modules/`uname -r`/build/include"
#
# Test if vboxpci module loaded. If it is, skip everything else
loaded=$(lsmod | grep vboxpci)
if [ -n "$loaded" ] ; then
echo "Kernel modules available - exiting..."
exit 0
fi
#
# Force installation of VB host sources. Zypper will install all the prerequisies
echo "Installing all required packages..."
killproc PackageKit
zypper install -y virtualbox-host-source > /dev/null 2>&1
if [ ! $? ] ; then
if [ "$?" -ne 0 ] ; then
echo "Installation of required packages failed."
echo "Use 'sudo zypper install virtualbox-host-source' to see the reason."
exit 1
@ -22,7 +29,7 @@ fi
pushd $SOURCE > /dev/null 2>&1
echo "Building kernel modules..."
make > $LOGFILE 2>&1
if [ ! $? ] ; then
if [ "$?" -ne 0 ] ; then
echo ""
echo "Build of VirtualBox host kernel modules failed."
echo "Look at $LOGFILE to find reasons."
@ -32,7 +39,7 @@ else
echo "Kernel modules built correctly. They will now be installed."
fi
make install >> $LOGFILE 2>&1
if [ ! $? ] ; then
if [ "$?" -ne 0 ] ; then
echo ""
echo "Installation of VirtualBox host kernel modules failed."
echo "Look at $LOGFILE to find reasons."

View File

@ -5,15 +5,21 @@
#
# This script is part of the openSUSE VirtualBox package
#
SOURCE="/usr/src/kernel-modules/virtualbox"
SOURCE="/usr/src/kernel-modules"
LOGFILE="/var/log/virtualbox.log"
INCLUDE="/lib/modules/`uname -r`/build/include"
#
# Test if vboxsf module loaded. If it is, skip everything else
loaded=$(lsmod | grep vboxsf)
if [ -n "$loaded" ] ; then
echo "Kernel modules available - exiting..."
exit 0
fi
# Force installation of VB guest sources. Zypper will install all the prerequisies
echo "Installing all required packages..."
killproc PackageKit
zypper install -y virtualbox-guest-source > /dev/null 2>&1
if [ ! $? ] ; then
if [ "$?" -ne 0 ] ; then
echo "Installation of required packages failed."
echo "Use 'sudo zypper install virtualbox-guest-source' to see the reason."
exit 1
@ -21,10 +27,10 @@ fi
# Prerequisites are available, start build
pushd $SOURCE > /dev/null 2>&1
echo "Building kernel modules..."
tar jxf guest_src.tar.bz2 > /dev/null 2>&1
tar jxf addition/guest_src.tar.bz2 > /dev/null 2>&1
cd additions/src
make > $LOGFILE 2>&1
if [ ! $? ] ; then
if [ "$?" -ne 0 ] ; then
echo ""
echo "Build of VirtualBox guest kernel modules failed."
echo "Look at $LOGFILE to find reasons."
@ -34,7 +40,7 @@ else
echo "Kernel modules built correctly. They will now be installed."
fi
make install >> $LOGFILE 2>&1
if [ ! $? ] ; then
if [ "$?" -ne 0 ] ; then
echo ""
echo "Installation of VirtualBox guest kernel modules failed."
echo "Look at $LOGFILE to find reasons."

View File

@ -1,9 +1,58 @@
#!/bin/bash
export QT_NO_KDE_INTEGRATION=1
# make certain that the user/group combination is valid
/usr/bin/id -nG | grep -v -e "root" -e "vboxusers" >/dev/null && /usr/lib/virtualbox/VBoxPermissionMessage && exit
if [ ! -f ~/.vbox/message_out ] ; then
#
# Handle the issue regarding USB passthru
# The following conditions apply:
# 1. If ~/.vbox/enable exists, the user accepts the security risk.
# 2. If ~/.vbox/disable exists, the user does not accept the risk. That file will contain the inode of /etc/udev/rules.d/60-vboxdrv.rules.
# When that changes, the VBoxUSB_DevRules will again be displayed as that means that VB has been reloaded.
#
devrules()
{
/usr/lib/virtualbox/VBoxUSB_DevRules
mkdir -p ~/.vbox/
touch ~/.vbox/message_out
if [ $? -eq 0 ] ; then
# User accepts the risk
touch ~/.vbox/enable
rm -f ~/.vbox/disable
else
# User declines the risk - save the inode
echo "" > ~/.vbox/disable
rm -f ~/.vbox/enable
fi
}
# Start of main routine
#
# Ensure that ~/.vbox exists
mkdir -p ~/.vbox/
# Get the inode for /etc/udev/rules.d/60-vboxdrv.rules
INODE=$(stat /etc/udev/rules.d/60-vboxdrv.rules | grep Inode | cut -d' ' -f3)
if [ ! -f ~/.vbox/enable ] && [ ! -f ~/.vbox/disable ] ; then
# Neither file exists - find what the user wants
devrules
fi
# Get the original Inode if it exists
if [ -f ~/.vbox/disable ] ; then
read LINE < ~/.vbox/disable
else
LINE=" "
fi
# If user originally declined, make certain that /etc/udev/rules.d/60-vboxdrv.rules has not been changed
if [ -f ~/.vbox/disable ] && [ "$LINE" != "$INODE" ] && [ "$LINE" != "" ] ; then
# disable is selected and the Inode has changed - ask again
devrules
fi
if [ -f ~/.vbox/disable ] ; then
echo $INODE > ~/.vbox/disable
if [ "$LINE" != "$INODE" ] ; then
if [ -f /usr/bin/kdesu ] ; then
kdesu /sbin/vbox-fix-usb-rules.sh
fi
if [ -f /usr/bin/gnomesu ] ; then
gnomesu /sbin/vbox-fix-usb-rules.sh
fi
fi
fi
# Now run the VB GUI
LD_LIBRARY_PATH="/usr/lib/virtualbox${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}" /usr/lib/virtualbox/VirtualBox $@

View File

@ -1,3 +1,46 @@
-------------------------------------------------------------------
Fri Jun 30 00:50:42 UTC 2017 - Larry.Finger@lwfinger.net
- Fix missing global for 32-bit version with gcc7. (bsc#1046571).
Fix missing frame buffer cleanup - private communication from Oracle - adds file "fix_KMS_support.patch".
-------------------------------------------------------------------
Sun Jun 25 17:09:01 UTC 2017 - Larry.Finger@lwfinger.net
- Fix logic error in scripts to build kernel modules locally - see bnc#1042726.
Fix "requires" for net-tools-deprecated so that Leap 42.3 will build.
Fix missing /media for Leap 42.3.
Fix typo in above changes.
-------------------------------------------------------------------
Sun Jun 25 00:20:08 UTC 2017 - Larry.Finger@lwfinger.net
- Fix some typos in the various service files as noted in boo#1044931.
With these fixes, TW guests start correctly. In addition, the /sbin/vboxconfig (for hosts) and the
/sbin/vboxguestconfig (for guests) work correctly.
-------------------------------------------------------------------
Wed Jun 21 16:46:48 UTC 2017 - Larry.Finger@lwfinger.net
- Now that kernel:HEAD:standard has changed to version 4.12.0-rcX, the VB drivers need some changes for new API's.
File "vbox_fix_for_kernel_4.12.patch" is added.
The added installation of "net-tools-deprecated" broke builds for Leap 42.3. That change is now conditional on building for Factory.
-------------------------------------------------------------------
Sat Jun 10 13:19:05 UTC 2017 - Larry.Finger@lwfinger.net
- Add installation of package "net-tools-deprecated" as requested in boo#1027742.
-------------------------------------------------------------------
Thu Jun 8 17:37:35 UTC 2017 - Larry.Finger@lwfinger.net
- Revise warning screen concerning USB passthru - fixes bnc#1041137.
USB passthru opens a security hole, yet it is so valuable that many users want the feature, thus it is our default.
Previously, a user needed to edit a udev rule to disable passthru. The bad part was that an update of VB changed the
rule back to allow passthru without any notification. These changes modify the popup to allow the user to accept or decline
passthru. If the user declines, then the root password is requested and the udev rule is modified. As these modifications will be
lost with the next VB update, the inode of the udev rule is kept. If the user has previously declined and the inode has changed,
the popup will show the next time VB is started. File "fix_usb_rules.sh" is added.
-------------------------------------------------------------------
Sun May 21 13:28:15 UTC 2017 - hpj@urpla.net

View File

@ -51,6 +51,7 @@ Source14: vboxdrv.service
Source15: vboxadd-service.service
Source16: vboxconfig.sh
Source17: vboxguestconfig.sh
Source18: fix_usb_rules.sh
Source98: %{name}-rpmlintrc
Source99: %{name}-patch-source.sh
#rework init scripts to fit suse needs
@ -100,6 +101,10 @@ Patch114: vbox_fix_42.3_api.patch
Patch115: vbox_fix_for_gcc7.patch
# Fix for missing include needed for server 1.19
Patch116: Fix_for_server_1.19.patch
# Fix for kernel 4.12 API changes
Patch117: vbox_fix_for_kernel_4.12.patch
# Fix for missing cleanup in KMS support
Patch118: fix_KMS_support.patch
#
BuildRequires: LibVNCServer-devel
BuildRequires: SDL-devel
@ -172,6 +177,9 @@ BuildRequires: pkgconfig(xrandr)
Requires: %{name}-host-kmp = %{version}
Requires(post): sysvinit(syslog)
Requires(pre): permissions
%if ! 0%{?suse_version} > 1325
Requires(pre): net-tools-deprecated
%endif
Requires(pre): pwdutils
Requires(pre): %insserv_prereq
Requires(pre): %fillup_prereq
@ -268,6 +276,9 @@ Supplements: modalias(pci:v000080EEd0000BEEFsv*sd*bc*sc*i*)
Provides: %{name}-ose-guest-tools = %{version}
Obsoletes: %{name}-ose-guest-tools < %{version}
Requires(pre): %insserv_prereq
%if ! 0%{?suse_version} > 1325
Requires(pre): net-tools-deprecated
%endif
%description guest-tools
VirtualBox guest addition tools.
@ -374,6 +385,8 @@ as an "extpack" for VirtualBox. The implementation is licensed under GPL.
%endif
%patch115 -p1
%patch116 -p1
%patch117 -p1
%patch118 -p1
#copy user manual
cp %{SOURCE1} UserManual.pdf
@ -540,7 +553,7 @@ ln -s %{_sysconfdir}/init.d/vboxadd-service %{buildroot}%{_sbindir}/rcvboxadd-se
# udev rule for guest (virtualbox-guest-tools)
install -m 644 %{SOURCE3} %{buildroot}%{_udevrulesdir}/60-vboxguest.rules
# /media is used for auto-mounting of shared folders
%if 0%{?suse_version} > 1310
%if 0%{?suse_version} > 1320 || 0%{?sle_version} == 120300
install -d -m 755 %{buildroot}/media
%endif
#
@ -620,7 +633,6 @@ install -m 644 out/linux.*/release/bin/VBox.png %{buildroot}%{_datadir}/pixmaps/
install -m 644 %{SOURCE4} %{buildroot}%{_sysconfdir}/default/virtualbox
#install wrapper script
install -m 644 %{SOURCE9} %{buildroot}%{_bindir}/VirtualBox
# modify and install the vboxdrv init script
sed -i "s|%{NOLSB}%|yes|g;s|%{DEBIAN}%||g;s|%{PACKAGE}%|virtualbox|g" \
src/VBox/Installer/linux/vboxdrv.sh
@ -628,14 +640,15 @@ install -m 744 src/VBox/Installer/linux/vboxdrv.sh %{buildroot}%{_sysconfdir}/in
ln -s %{_sysconfdir}/init.d/vboxdrv %{buildroot}%{_sbindir}/rcvboxdrv
# Service files to load kernel modules on boot
install -m 0644 %{SOURCE14} %{buildroot}%{_unitdir}/vboxdrv.service
install -m 0644 %{SOURCE14} %{buildroot}%{_unitdir}/multi-user.target.wants/vboxdrv.service
install -m 0644 %{SOURCE15} %{buildroot}%{_unitdir}/vboxadd-service.service
install -m 0644 %{SOURCE15} %{buildroot}%{_unitdir}/multi-user.target.wants/vboxadd-service.service
install -m 0644 %{SOURCE16} %{buildroot}/sbin/vboxconfig
install -m 0644 %{SOURCE17} %{buildroot}/sbin/vboxguestconfig
install -m 0755 %{SOURCE16} %{buildroot}/sbin/vboxconfig
install -m 0755 %{SOURCE17} %{buildroot}/sbin/vboxguestconfig
install -m 0755 %{SOURCE18} %{buildroot}/sbin/vbox-fix-usb-rules.sh
# Init script to start virtual boxes during boot
install -m 755 %{SOURCE12} %{buildroot}%{_sysconfdir}/init.d/vboxes
ln -s %{_sysconfdir}/init.d/vboxes %{buildroot}%{_sbindir}/rcvboxes
ln -sf %{_unitdir}/vboxdrv.service %{buildroot}%{_unitdir}/multi-user.target.wants/vboxdrv.service
ln -sf %{_unitdir}/vboxadd-service.service %{buildroot}%{_unitdir}/multi-user.target.wants/vboxadd-service.service
# sysconfig file intended for vboxes script
install -d -m 755 %{buildroot}%{_var}/adm/fillup-templates
install -m 640 %{SOURCE13} %{buildroot}%{_var}/adm/fillup-templates/sysconfig.vbox
@ -881,6 +894,8 @@ export DISABLE_RESTART_ON_UPDATE=yes
%verify(not mode) %attr(4750,root,vboxusers) %{_vbox_instdir}/VirtualBox
#wrapper script is in bindir
%attr(0755,root,root) %{_bindir}/VirtualBox
#rules fixing script is in /sbin
%attr(0755,root,root) /sbin/vbox-fix-usb-rules.sh
#ldd shows libQt* dependency
%{_vbox_instdir}/VBoxTestOGL
#qm's translations
@ -915,7 +930,7 @@ export DISABLE_RESTART_ON_UPDATE=yes
%{_unitdir}/multi-user.target.wants/vboxadd-service.service
%{_sbindir}/rcvboxadd
%{_sbindir}/rcvboxadd-service
%if 0%{?suse_version} > 1310
%if 0%{?suse_version} > 1320 || 0%{?sle_version} == 120300
%dir /media
%endif