diff --git a/fixes_for_leap15.6.patch b/fixes_for_leap15.6.patch
new file mode 100644
index 0000000..157b3da
--- /dev/null
+++ b/fixes_for_leap15.6.patch
@@ -0,0 +1,111 @@
+Index: VirtualBox-7.0.14/src/VBox/Runtime/r0drv/linux/memobj-r0drv-linux.c
+===================================================================
+--- VirtualBox-7.0.14.orig/src/VBox/Runtime/r0drv/linux/memobj-r0drv-linux.c
++++ VirtualBox-7.0.14/src/VBox/Runtime/r0drv/linux/memobj-r0drv-linux.c
+@@ -1292,9 +1292,6 @@ DECLHIDDEN(int) rtR0MemObjNativeLockUser
+ IPRT_LINUX_SAVE_EFL_AC();
+ const int cPages = cb >> PAGE_SHIFT;
+ struct task_struct *pTask = rtR0ProcessToLinuxTask(R0Process);
+-# if GET_USER_PAGES_API < KERNEL_VERSION(6, 5, 0)
+- struct vm_area_struct **papVMAs;
+-# endif
+ PRTR0MEMOBJLNX pMemLnx;
+ int rc = VERR_NO_MEMORY;
+ int const fWrite = fAccess & RTMEM_PROT_WRITE ? 1 : 0;
+@@ -1318,11 +1315,6 @@ DECLHIDDEN(int) rtR0MemObjNativeLockUser
+ return VERR_NO_MEMORY;
+ }
+
+-# if GET_USER_PAGES_API < KERNEL_VERSION(6, 5, 0)
+- papVMAs = (struct vm_area_struct **)RTMemAlloc(sizeof(*papVMAs) * cPages);
+- if (papVMAs)
+- {
+-# endif
+ LNX_MM_DOWN_READ(pTask->mm);
+
+ /*
+@@ -1342,9 +1334,6 @@ DECLHIDDEN(int) rtR0MemObjNativeLockUser
+ fWrite, /* force write access. */
+ # endif
+ &pMemLnx->apPages[0] /* Page array. */
+-# if GET_USER_PAGES_API < KERNEL_VERSION(6, 5, 0) && !RTLNX_SUSE_MAJ_PREREQ(15, 6)
+- , papVMAs /* vmas */
+-# endif
+ );
+ /*
+ * Actually this should not happen at the moment as call this function
+@@ -1367,12 +1356,7 @@ DECLHIDDEN(int) rtR0MemObjNativeLockUser
+ fWrite, /* force write access. */
+ # endif
+ &pMemLnx->apPages[0] /* Page array. */
+-# if GET_USER_PAGES_API < KERNEL_VERSION(6, 5, 0)
+- , papVMAs /* vmas */
+-# endif
+-# if GET_USER_PAGES_API >= KERNEL_VERSION(4, 10, 0)
+- , NULL /* locked */
+-# endif
++ , NULL, NULL
+ );
+ #else /* GET_USER_PAGES_API < KERNEL_VERSION(4, 6, 0) */
+ rc = get_user_pages(pTask, /* Task for fault accounting. */
+@@ -1389,9 +1373,6 @@ DECLHIDDEN(int) rtR0MemObjNativeLockUser
+ fWrite, /* force write access. */
+ # endif
+ &pMemLnx->apPages[0] /* Page array. */
+-# if GET_USER_PAGES_API < KERNEL_VERSION(6, 5, 0) && && !defined(OPENSUSE_156)
+- , papVMAs /* vmas */
+-# endif
+ );
+ #endif /* GET_USER_PAGES_API < KERNEL_VERSION(4, 6, 0) */
+ if (rc == cPages)
+@@ -1415,21 +1396,10 @@ DECLHIDDEN(int) rtR0MemObjNativeLockUser
+ while (rc-- > 0)
+ {
+ flush_dcache_page(pMemLnx->apPages[rc]);
+-# if GET_USER_PAGES_API < KERNEL_VERSION(6, 5, 0)
+-# if RTLNX_VER_MIN(6,3,0)
+- vm_flags_set(papVMAs[rc], VM_DONTCOPY | VM_LOCKED);
+-# else
+- papVMAs[rc]->vm_flags |= VM_DONTCOPY | VM_LOCKED;
+-# endif
+-# endif
+ }
+
+ LNX_MM_UP_READ(pTask->mm);
+
+-# if GET_USER_PAGES_API < KERNEL_VERSION(6, 5, 0)
+- RTMemFree(papVMAs);
+-# endif
+-
+ pMemLnx->Core.u.Lock.R0Process = R0Process;
+ pMemLnx->cPages = cPages;
+ Assert(!pMemLnx->fMappedToRing0);
+@@ -1457,11 +1427,6 @@ DECLHIDDEN(int) rtR0MemObjNativeLockUser
+
+ rc = VERR_LOCK_FAILED;
+
+-# if GET_USER_PAGES_API < KERNEL_VERSION(6, 5, 0)
+- RTMemFree(papVMAs);
+- }
+-# endif
+-
+ rtR0MemObjDelete(&pMemLnx->Core);
+ IPRT_LINUX_RESTORE_EFL_AC();
+ return rc;
+Index: VirtualBox-7.0.14/src/VBox/Additions/linux/sharedfolders/regops.c
+===================================================================
+--- VirtualBox-7.0.14.orig/src/VBox/Additions/linux/sharedfolders/regops.c
++++ VirtualBox-7.0.14/src/VBox/Additions/linux/sharedfolders/regops.c
+@@ -270,11 +270,7 @@ static ssize_t vbsf_iov_iter_get_pages(s
+ size_t cPagesLocked;
+
+ down_read(&pTask->mm->mmap_sem);
+-#if defined(OPENSUSE_156)
+ cPagesLocked = get_user_pages(pTask, pTask->mm, uPtrFrom, cPages);
+-#else
+- cPagesLocked = get_user_pages(pTask, pTask->mm, uPtrFrom, cPages, iter->v_write, 1 /*force*/, papPages, NULL);
+-#endif
+ up_read(&pTask->mm->mmap_sem);
+ if (cPagesLocked == cPages) {
+ size_t cbRet = (cPages << PAGE_SHIFT) - offPg0;
+
diff --git a/fixes_for_vboxconfig.patch b/fixes_for_vboxconfig.patch
new file mode 100644
index 0000000..7e409a3
--- /dev/null
+++ b/fixes_for_vboxconfig.patch
@@ -0,0 +1,107 @@
+Index: VirtualBox-7.0.14/src/VBox/Frontends/VirtualBox/nls/VirtualBox_lt.ts
+===================================================================
+--- VirtualBox-7.0.14.orig/src/VBox/Frontends/VirtualBox/nls/VirtualBox_lt.ts
++++ VirtualBox-7.0.14/src/VBox/Frontends/VirtualBox/nls/VirtualBox_lt.ts
+@@ -92,19 +92,19 @@
+ VirtualBox Linux branduolio modulis (vboxdrv) arba nėra įkeltas, arba nepakanka leidimų dirbti su /dev/vboxdrv. Iš naujo įdiekite branduolio modulį root teisėmis įvykdydami <br/><br/><font color=blue>'/sbin/rcvboxdrv setup'</font><br/><br/>. Jei įmanoma pirma turite įsidiegti DKMS paketą. Šis paketas seka Linux branduolio pakeitimus ir, jei reikia, perkompiliuoja vboxdrv branduolio modulį.
+
+
+-
+- VirtualBox Linux branduolio tvarkyklė (vboxdrv) neįkelta arba /dev/vboxdrv turi bėdų su leidimais. Iš naujo įdiekite branduolio modulį įvykdydami <br/><br/> <font color=blue>/sbin/vboxconfig</font><br/><br/> administratoriaus (root) teisėmis.
++
++ VirtualBox Linux branduolio tvarkyklė (vboxdrv) neįkelta arba /dev/vboxdrv turi bėdų su leidimais. Iš naujo įdiekite branduolio modulį įvykdydami <br/><br/> <font color=blue>/usr/sbin/vboxconfig</font><br/><br/> administratoriaus (root) teisėmis.
+
+
+-
+- VirtualBox branduolio modulis neatitinka VirtualBox versijos. Panašu, kad VirtualBox diegimas nebuvo sėkmingas. Pataisyti gali pavykti įvykdžius<br/><br/> <font color=blue>/sbin/vboxconfig</font><br/><br/> Įsitikinkite, ar nemaišote VirtualBox OSE ir PUEL versijų.
++
++ VirtualBox branduolio modulis neatitinka VirtualBox versijos. Panašu, kad VirtualBox diegimas nebuvo sėkmingas. Pataisyti gali pavykti įvykdžius<br/><br/> <font color=blue>/usr/sbin/vboxconfig</font><br/><br/> Įsitikinkite, ar nemaišote VirtualBox OSE ir PUEL versijų.
+
+
+-
++
+
+
+
+-
++
+
+
+
+Index: VirtualBox-7.0.14/src/VBox/Frontends/VirtualBox/nls/VirtualBox_tr.ts
+===================================================================
+--- VirtualBox-7.0.14.orig/src/VBox/Frontends/VirtualBox/nls/VirtualBox_tr.ts
++++ VirtualBox-7.0.14/src/VBox/Frontends/VirtualBox/nls/VirtualBox_tr.ts
+@@ -148,20 +148,20 @@
+ Kare Boyutu: %1x%2, Kare Oranı: %3fps, Bit Oranı: %4kbps
+
+
+-
+- VirtualBox Linux çekirdek sürücüsü (vboxdrv) ya yüklenmedi ya da /dev/vboxdrv ile ilgili izin sorunu var. Lütfen root kullanıcısı olarak <br/><br/> <font color=blue>'/sbin/vboxconfig'</font><br/><br/> dosyasını çalıştırarak çekirdek modülünü yeniden yükleyin.
++
++ VirtualBox Linux çekirdek sürücüsü (vboxdrv) ya yüklenmedi ya da /dev/vboxdrv ile ilgili izin sorunu var. Lütfen root kullanıcısı olarak <br/><br/> <font color=blue>'/usr/sbin/vboxconfig'</font><br/><br/> dosyasını çalıştırarak çekirdek modülünü yeniden yükleyin.
+
+
+-
+- VirtualBox çekirdek modülleri VirtualBox'ın bu sürümüyle uyuşmuyor. VirtualBox'ın kurulumu görünüşe göre başarılı olmadı. <br/><br/> <font color=blue>'/sbin/vboxconfig'</font><br/><br/> dosyasını çalıştırmak bunu düzeltebilir. VirtualBox'ın OSE ve PUEL sürümlerini karıştırmadığınızdan emin olun.
++
++ VirtualBox çekirdek modülleri VirtualBox'ın bu sürümüyle uyuşmuyor. VirtualBox'ın kurulumu görünüşe göre başarılı olmadı. <br/><br/> <font color=blue>'/usr/sbin/vboxconfig'</font><br/><br/> dosyasını çalıştırmak bunu düzeltebilir. VirtualBox'ın OSE ve PUEL sürümlerini karıştırmadığınızdan emin olun.
+
+
+-
+- VirtualBox Linux çekirdek sürücüsü ya yüklenmedi ya da doğru olarak ayarlanmadı. Lütfen root kullanıcısı olarak <br/><br/> <font color=blue>'/sbin/vboxconfig'</font><br/><br/> dosyasını çalıştırarak bunu tekrar ayarlamayı deneyin. Eğer sisteminizde EFI Secure Boot etkinleştirildiyse, çekirdek modüllerini (vboxdrv, vboxnetflt, vboxnetadp, vboxpci) yüklemeden önce ayrıca bunları imzalamanız gerekebilir. Lütfen daha fazla bilgi için Linux sisteminin belgelerine bakın.
++
++ VirtualBox Linux çekirdek sürücüsü ya yüklenmedi ya da doğru olarak ayarlanmadı. Lütfen root kullanıcısı olarak <br/><br/> <font color=blue>'/usr/sbin/vboxconfig'</font><br/><br/> dosyasını çalıştırarak bunu tekrar ayarlamayı deneyin. Eğer sisteminizde EFI Secure Boot etkinleştirildiyse, çekirdek modüllerini (vboxdrv, vboxnetflt, vboxnetadp, vboxpci) yüklemeden önce ayrıca bunları imzalamanız gerekebilir. Lütfen daha fazla bilgi için Linux sisteminin belgelerine bakın.
+
+
+-
+- VirtualBox çekirdek modülleri VirtualBox'ın bu sürümüyle uyuşmuyor. VirtualBox'ın kurulumu görünüşe göre başarılı olmadı. <br/><br/> <font color=blue>'/sbin/vboxconfig'</font><br/><br/> dosyasını çalıştırmak bunu düzeltebilir. Farklı kaynaklardan gelen VirtualBox'ın yapımlarını karıştırmadığınızdan emin olun.
++
++ VirtualBox çekirdek modülleri VirtualBox'ın bu sürümüyle uyuşmuyor. VirtualBox'ın kurulumu görünüşe göre başarılı olmadı. <br/><br/> <font color=blue>'/usr/sbin/vboxconfig'</font><br/><br/> dosyasını çalıştırmak bunu düzeltebilir. Farklı kaynaklardan gelen VirtualBox'ın yapımlarını karıştırmadığınızdan emin olun.
+
+
+
+Index: VirtualBox-7.0.14/src/VBox/Frontends/VirtualBox/src/main.cpp
+===================================================================
+--- VirtualBox-7.0.14.orig/src/VBox/Frontends/VirtualBox/src/main.cpp
++++ VirtualBox-7.0.14/src/VBox/Frontends/VirtualBox/src/main.cpp
+@@ -99,7 +99,7 @@ QString g_QStrHintLinuxNoMemory = QAppli
+ QString g_QStrHintLinuxNoDriver = QApplication::tr(
+ "The VirtualBox Linux kernel driver is either not loaded or not set "
+ "up correctly. Please try setting it up again by executing
"
+- " '/sbin/vboxconfig'
"
++ " '/usr/sbin/vboxconfig'
"
+ "as root.
"
+ "If your system has EFI Secure Boot enabled you may also need to sign "
+ "the kernel modules (vboxdrv, vboxnetflt, vboxnetadp, vboxpci) before "
+@@ -118,7 +118,7 @@ QString g_QStrHintLinuxWrongDriverVersio
+ "The VirtualBox kernel modules do not match this version of "
+ "VirtualBox. The installation of VirtualBox was apparently not "
+ "successful. Executing
"
+- " '/sbin/vboxconfig'
"
++ " '/usr/sbin/vboxconfig'
"
+ "may correct this. Make sure that you are not mixing builds "
+ "of VirtualBox from different sources."
+ );
+Index: VirtualBox-7.0.14/src/VBox/Installer/linux/VBox.sh
+===================================================================
+--- VirtualBox-7.0.14.orig/src/VBox/Installer/linux/VBox.sh
++++ VirtualBox-7.0.14/src/VBox/Installer/linux/VBox.sh
+@@ -72,7 +72,7 @@ WARNING: The vboxdrv kernel module is no
+ available for the current kernel (`uname -r`) or it failed to
+ load. Please recompile the kernel module and install it by
+
+- sudo /sbin/vboxconfig
++ sudo /usr/sbin/vboxconfig
+
+ You will not be able to start VMs until this problem is fixed.
+ EOF
+@@ -80,7 +80,7 @@ elif [ ! -c /dev/vboxdrv ]; then
+ cat << EOF
+ WARNING: The character device /dev/vboxdrv does not exist. Try
+
+- sudo /sbin/vboxconfig
++ sudo /usr/sbin/vboxconfig
+
+ and if that is not successful, try to re-install the package.
+
diff --git a/kernel-6.8.patch b/kernel-6.8.patch
index 8ca1a22..320218b 100644
--- a/kernel-6.8.patch
+++ b/kernel-6.8.patch
@@ -16,8 +16,10 @@ Signed-off-by: Jiri Slaby
src/VBox/Additions/linux/sharedfolders/vfsmod.c | 6 +++---
2 files changed, 6 insertions(+), 6 deletions(-)
---- a/src/VBox/Additions/common/VBoxGuest/VBoxGuest-linux.c
-+++ b/src/VBox/Additions/common/VBoxGuest/VBoxGuest-linux.c
+Index: VirtualBox-7.0.14/src/VBox/Additions/common/VBoxGuest/VBoxGuest-linux.c
+===================================================================
+--- VirtualBox-7.0.14.orig/src/VBox/Additions/common/VBoxGuest/VBoxGuest-linux.c
++++ VirtualBox-7.0.14/src/VBox/Additions/common/VBoxGuest/VBoxGuest-linux.c
@@ -1361,7 +1361,7 @@ static int vgdrvLinuxParamLogGrpSet(cons
RTLogGroupSettings(pLogger, pszValue);
}
@@ -45,8 +47,10 @@ Signed-off-by: Jiri Slaby
return 0;
}
---- a/src/VBox/Additions/linux/sharedfolders/vfsmod.c
-+++ b/src/VBox/Additions/linux/sharedfolders/vfsmod.c
+Index: VirtualBox-7.0.14/src/VBox/Additions/linux/sharedfolders/vfsmod.c
+===================================================================
+--- VirtualBox-7.0.14.orig/src/VBox/Additions/linux/sharedfolders/vfsmod.c
++++ VirtualBox-7.0.14/src/VBox/Additions/linux/sharedfolders/vfsmod.c
@@ -1408,7 +1408,7 @@ static int vbsf_parse_param(struct fs_co
switch (opt) {
case Opt_iocharset:
diff --git a/vbox-usb-warning.diff b/vbox-usb-warning.diff
index c8e9f8a..dcbe4f9 100644
--- a/vbox-usb-warning.diff
+++ b/vbox-usb-warning.diff
@@ -75,3 +75,23 @@ Index: VirtualBox-7.0.14/src/apps/VBoxUSB_DevRules/VBoxUSB_DevRules.cpp
+ return 1;
+}
+
+Index: VirtualBox-7.0.14/src/VBox/Installer/linux/VBoxCreateUSBNode.sh
+===================================================================
+--- VirtualBox-7.0.14.orig/src/VBox/Installer/linux/VBoxCreateUSBNode.sh
++++ VirtualBox-7.0.14/src/VBox/Installer/linux/VBoxCreateUSBNode.sh
+@@ -47,12 +47,13 @@ case "$do_remove" in
+ exit 0
+ fi
+ case "$group" in "") group="vboxusers";; esac
+- mkdir /dev/vboxusb -m 0750 2>/dev/null
++ mkdir /dev/vboxusb -m 0660 2>/dev/null
+ chown root:$group /dev/vboxusb 2>/dev/null
+- mkdir "$devdir" -m 0750 2>/dev/null
++ mkdir "$devdir" -m 0660 2>/dev/null
+ chown root:$group "$devdir" 2>/dev/null
+ mknod "$devpath" c $1 $2 -m 0660 2>/dev/null
+ chown root:$group "$devpath" 2>/dev/null
++ chmod 0660 "$devpath" 2 > /dev/null
+ ;;
+ 1)
+ rm -f "$devpath"
diff --git a/vboxdrv.sh b/vboxdrv.sh
index 0079acb..65340f9 100644
--- a/vboxdrv.sh
+++ b/vboxdrv.sh
@@ -60,6 +60,10 @@ fi
[ -r /etc/default/virtualbox ] && . /etc/default/virtualbox
+chmod "${DEVICE_MODE}" /etc/vboxusb/
+chmod "${DEVICE_MODE}" /etc/vboxusb/*
+chmod "${DEVICE_MODE}" /etc/vboxusb/*/*
+
begin_msg()
{
test -n "${2}" && echo "${SCRIPTNAME}: ${1}."
diff --git a/virtualbox.changes b/virtualbox.changes
index c2e1ac5..706e0dd 100644
--- a/virtualbox.changes
+++ b/virtualbox.changes
@@ -1,3 +1,16 @@
+-------------------------------------------------------------------
+Thu Mar 28 17:26:16 UTC 2024 - Larry Finger
+
+- The location of vboxconfig is wrong. Add file fixes_for_vboxconfig.patch
+ to fix.
+ Some errors in vboxdrv.sh are fixed.
+
+-------------------------------------------------------------------
+Wed Mar 27 23:42:34 UTC 2024 - Larry Finger
+
+- Further fixes for builds on Leap 15.6. Fixes boo#1221496.
+ Adds file fixes_for_leap15.6.patch
+
-------------------------------------------------------------------
Tue Mar 12 09:06:54 UTC 2024 - Jiri Slaby
diff --git a/virtualbox.spec b/virtualbox.spec
index e6114d0..33654c4 100644
--- a/virtualbox.spec
+++ b/virtualbox.spec
@@ -1,5 +1,5 @@
#
-# spec file for package virtualbox
+# spec file
#
# Copyright (c) 2024 SUSE LLC
#
@@ -159,9 +159,10 @@ Patch38: python311.patch
Patch39: fix_sdl_build.patch
# Fixes for openSUSE Leap 15.X
Patch40: fixes_for_leap.patch
-# Fix for set_pte() warning
-#Patch41: fix_pte_warning.patch
+# Fixes for Leap 15.6
+Patch41: fixes_for_leap15.6.patch
Patch42: kernel-6.8.patch
+Patch43: fixes_for_vboxconfig.patch
#
# Common BuildRequires for both virtualbox and virtualbox-kmp
BuildRequires: %{kernel_module_package_buildreqs}
@@ -179,6 +180,7 @@ BuildRequires: module-init-tools
BuildRequires: nasm
BuildRequires: pam-devel
BuildRequires: yasm
+BuildRequires: zlib-devel
ExclusiveArch: x86_64
%if 0%{?sle_version} != 120300
Source2: VirtualBox.appdata.xml
@@ -474,8 +476,11 @@ This package contains the kernel-modules that VirtualBox uses to create or run v
%patch -P 38 -p1
%patch -P 39 -p1
%patch -P 40 -p1
-#%patch -P 41 -p1
+%if 0%{?sle_version} == 150600 && 0%{?is_opensuse}
+%patch -P 41 -p1
+%endif
%patch -P 42 -p1
+%patch -P 43 -p1
### Documents for virtualbox main package ###
%if %{main_package}