From a49d0963b3acf941a3a106addb1d859f9444881c Mon Sep 17 00:00:00 2001 From: Rmys Date: Thu, 9 Apr 2020 20:16:53 +0300 Subject: [PATCH] virtualbox --- ...ount-Change-Linux-mount-code-to-use-.patch | 189 ++++++++++++++++++ hardware/virtualization/virtualbox/pspec.xml | 15 +- 2 files changed, 199 insertions(+), 5 deletions(-) create mode 100644 hardware/virtualization/virtualbox/files/0001-VBoxServiceAutoMount-Change-Linux-mount-code-to-use-.patch diff --git a/hardware/virtualization/virtualbox/files/0001-VBoxServiceAutoMount-Change-Linux-mount-code-to-use-.patch b/hardware/virtualization/virtualbox/files/0001-VBoxServiceAutoMount-Change-Linux-mount-code-to-use-.patch new file mode 100644 index 0000000000..6a15a33378 --- /dev/null +++ b/hardware/virtualization/virtualbox/files/0001-VBoxServiceAutoMount-Change-Linux-mount-code-to-use-.patch @@ -0,0 +1,189 @@ +From 369dd2ee3c82c4417fee04aeec933c74fd198e78 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Tue, 23 Jan 2018 15:09:20 +0100 +Subject: [PATCH resend] VBoxServiceAutoMount: Change Linux mount code to use + an options string + +Signed-off-by: Hans de Goede +--- + .../common/VBoxService/VBoxServiceAutoMount.cpp | 62 +++------------------- + 1 file changed, 8 insertions(+), 54 deletions(-) + +diff --git a/src/VBox/Additions/common/VBoxService/VBoxServiceAutoMount.cpp b/src/VBox/Additions/common/VBoxService/VBoxServiceAutoMount.cpp +--- ./src/VBox/Additions/common/VBoxService/VBoxServiceAutoMount.cpp.orig 2019-04-16 11:09:11.000000000 +0100 ++++ ./src/VBox/Additions/common/VBoxService/VBoxServiceAutoMount.cpp 2019-04-26 17:10:47.178485356 +0100 +@@ -40,6 +40,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -114,6 +115,9 @@ RT_C_DECLS_END + # define VBOXSERVICE_AUTOMOUNT_MIQF SHFL_MIQF_PATH + #endif + ++#ifndef MAX_MNTOPT_STR ++#define MAX_MNTOPT_STR PAGE_SIZE ++#endif + + /********************************************************************************************************************************* + * Structures and Typedefs * +@@ -400,13 +399,13 @@ static int vbsvcAutoMountSharedFolderOld + int rc = vbsvcAutoMountPrepareMountPointOld(pszMountPoint, pszShareName, &Opts); + if (RT_SUCCESS(rc)) + { ++ char szOptBuf[MAX_MNTOPT_STR] = { '\0', }; ++ RTStrPrintf(szOptBuf, sizeof(szOptBuf), "uid=%d,gid=%d,dmode=%0o,fmode=%0o,dmask=%0o,fmask=%0o", ++ Opts.uid, Opts.gid, Opts.dmode, Opts.fmode, Opts.dmask, Opts.fmask); + # ifdef RT_OS_SOLARIS + int fFlags = 0; + if (Opts.ronly) + fFlags |= MS_RDONLY; +- char szOptBuf[MAX_MNTOPT_STR] = { '\0', }; +- RTStrPrintf(szOptBuf, sizeof(szOptBuf), "uid=%d,gid=%d,dmode=%0o,fmode=%0o,dmask=%0o,fmask=%0o", +- Opts.uid, Opts.gid, Opts.dmode, Opts.fmode, Opts.dmask, Opts.fmask); + int r = mount(pszShareName, + pszMountPoint, + fFlags | MS_OPTIONSTR, +@@ -423,35 +422,11 @@ static int vbsvcAutoMountSharedFolderOld + + # else /* RT_OS_LINUX */ + unsigned long fFlags = MS_NODEV; +- +- /*const char *szOptions = { "rw" }; - ??? */ +- struct vbsf_mount_info_new mntinf; +- RT_ZERO(mntinf); +- +- mntinf.nullchar = '\0'; +- mntinf.signature[0] = VBSF_MOUNT_SIGNATURE_BYTE_0; +- mntinf.signature[1] = VBSF_MOUNT_SIGNATURE_BYTE_1; +- mntinf.signature[2] = VBSF_MOUNT_SIGNATURE_BYTE_2; +- mntinf.length = sizeof(mntinf); +- +- mntinf.uid = Opts.uid; +- mntinf.gid = Opts.gid; +- mntinf.ttl = Opts.ttl; +- mntinf.dmode = Opts.dmode; +- mntinf.fmode = Opts.fmode; +- mntinf.dmask = Opts.dmask; +- mntinf.fmask = Opts.fmask; +- mntinf.cMaxIoPages = Opts.cMaxIoPages; +- mntinf.szTag[0] = '\0'; +- +- strcpy(mntinf.name, pszShareName); +- strcpy(mntinf.nls_name, "\0"); +- + int r = mount(pszShareName, + pszMountPoint, + "vboxsf", + fFlags, +- &mntinf); ++ szOptBuf); + if (r == 0) + { + VGSvcVerbose(0, "vbsvcAutoMountWorker: Shared folder '%s' was mounted to '%s'\n", pszShareName, pszMountPoint); +@@ -484,34 +459,6 @@ static int vbsvcAutoMountSharedFolderOld + } + else /* r == -1, we got some error in errno. */ + { +- if (errno == EPROTO) +- { +- VGSvcVerbose(3, "vbsvcAutoMountWorker: Messed up share name, re-trying ...\n"); +- +- /** @todo r=bird: What on earth is going on here????? Why can't you +- * strcpy(mntinf.name, pszShareName) to fix it again? */ +- +- /* Sometimes the mount utility messes up the share name. Try to +- * un-mangle it again. */ +- char szCWD[RTPATH_MAX]; +- size_t cchCWD; +- if (!getcwd(szCWD, sizeof(szCWD))) +- { +- VGSvcError("vbsvcAutoMountWorker: Failed to get the current working directory\n"); +- szCWD[0] = '\0'; +- } +- cchCWD = strlen(szCWD); +- if (!strncmp(pszMountPoint, szCWD, cchCWD)) +- { +- while (pszMountPoint[cchCWD] == '/') +- ++cchCWD; +- /* We checked before that we have enough space */ +- strcpy(mntinf.name, pszMountPoint + cchCWD); +- } +- r = mount(mntinf.name, pszMountPoint, "vboxsf", fFlags, &mntinf); +- } +- if (r == -1) /* Was there some error from one of the tries above? */ +- { + switch (errno) + { + /* If we get EINVAL here, the system already has mounted the Shared Folder to another +@@ -530,7 +477,6 @@ static int vbsvcAutoMountSharedFolderOld + rc = RTErrConvertFromErrno(errno); + break; + } +- } + } + # endif + } +@@ -1464,51 +1410,21 @@ static int vbsvcAutomounterMountIt(PVBSV + } + + # if defined(RT_OS_LINUX) +- /* +- * Linux a bit more work... +- */ +- struct vbsf_mount_info_new MntInfo; +- RT_ZERO(MntInfo); +- struct vbsf_mount_opts MntOpts; +- RT_ZERO(MntOpts); +- MntInfo.nullchar = '\0'; +- MntInfo.signature[0] = VBSF_MOUNT_SIGNATURE_BYTE_0; +- MntInfo.signature[1] = VBSF_MOUNT_SIGNATURE_BYTE_1; +- MntInfo.signature[2] = VBSF_MOUNT_SIGNATURE_BYTE_2; +- MntInfo.length = sizeof(MntInfo); +- MntInfo.ttl = MntOpts.ttl = -1 /*default*/; +- MntInfo.msDirCacheTTL= MntOpts.msDirCacheTTL = -1 /*default*/; +- MntInfo.msInodeTTL = MntOpts.msInodeTTL = -1 /*default*/; +- MntInfo.cMaxIoPages = MntOpts.cMaxIoPages = 0 /*default*/; +- MntInfo.cbDirBuf = MntOpts.cbDirBuf = 0 /*default*/; +- MntInfo.enmCacheMode = MntOpts.enmCacheMode = kVbsfCacheMode_Default; +- MntInfo.uid = MntOpts.uid = 0; +- MntInfo.gid = MntOpts.gid = gidMount; +- MntInfo.dmode = MntOpts.dmode = 0770; +- MntInfo.fmode = MntOpts.fmode = 0770; +- MntInfo.dmask = MntOpts.dmask = 0000; +- MntInfo.fmask = MntOpts.fmask = 0000; +- memcpy(MntInfo.szTag, g_szTag, sizeof(g_szTag)); AssertCompile(sizeof(MntInfo.szTag) >= sizeof(g_szTag)); +- rc = RTStrCopy(MntInfo.name, sizeof(MntInfo.name), pEntry->pszName); +- if (RT_FAILURE(rc)) ++ unsigned long fFlags = MS_NODEV; ++ char szOpts[MAX_MNTOPT_STR] = { '\0', }; ++ ssize_t cchOpts = RTStrPrintf2(szOpts, sizeof(szOpts), ++ "uid=0,gid=%d,dmode=0770,fmode=0770,dmask=0000,fmask=0000", gidMount); ++ if (cchOpts <= 0) + { +- VGSvcError("vbsvcAutomounterMountIt: Share name '%s' is too long for the MntInfo.name field!\n", pEntry->pszName); +- return rc; ++ VGSvcError("vbsvcAutomounterMountIt: szOpts overflow! %zd\n", cchOpts); ++ return VERR_BUFFER_OVERFLOW; + } + +- errno = 0; +- unsigned long fFlags = MS_NODEV; +- rc = mount(pEntry->pszName, pEntry->pszActualMountPoint, "vboxsf", fFlags, &MntInfo); ++ rc = mount(pEntry->pszName, pEntry->pszActualMountPoint, "vboxsf", fFlags, szOpts); + if (rc == 0) + { + VGSvcVerbose(0, "vbsvcAutomounterMountIt: Successfully mounted '%s' on '%s'\n", + pEntry->pszName, pEntry->pszActualMountPoint); +- +- errno = 0; +- rc = vbsfmount_complete(pEntry->pszName, pEntry->pszActualMountPoint, fFlags, &MntOpts); +- if (rc != 0) /* Ignorable. /etc/mtab is probably a link to /proc/mounts. */ +- VGSvcVerbose(1, "vbsvcAutomounterMountIt: vbsfmount_complete failed: %s (%d/%d)\n", +- rc == 1 ? "open_memstream" : rc == 2 ? "setmntent" : rc == 3 ? "addmntent" : "unknown", rc, errno); + return VINF_SUCCESS; + } + else if (errno == EINVAL) diff --git a/hardware/virtualization/virtualbox/pspec.xml b/hardware/virtualization/virtualbox/pspec.xml index f729c14cf7..c889fc3d6f 100644 --- a/hardware/virtualization/virtualbox/pspec.xml +++ b/hardware/virtualization/virtualbox/pspec.xml @@ -55,24 +55,21 @@ qt5-base-devel qt5-linguist docbook-xml - libglvnd-devel + libglvnd-devel LocalConfig.kmk wrapper.patch - 005-gsoap-build.patch 006-rdesktop-vrdp-keymap-path.patch 008-root-window.patch python.patch 008-no-vboxvideo.patch - 012-vboxsf-automount.patch - --> - 013-Makefile.patch VirtualBox-6.1.2-disable-update.patch + 0001-VBoxServiceAutoMount-Change-Linux-mount-code-to-use-.patch @@ -103,6 +100,7 @@ openssl device-mapper qt5-x11extras + virtualbox-guest-iso module-virtualbox virtualbox-dkms @@ -197,6 +195,13 @@ + + 2020-04-09 + 6.1.4 + Rebuild virtualbox-guest-iso + Mustafa Cinasal + muscnsl@gmail.com + 2020-02-22 6.1.4