Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package virtualbox for openSUSE:Factory 
checked in at 2023-03-24 15:16:05
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/virtualbox (Old)
 and      /work/SRC/openSUSE:Factory/.virtualbox.new.31432 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "virtualbox"

Fri Mar 24 15:16:05 2023 rev:254 rq:1073626 version:7.0.6

Changes:
--------
--- /work/SRC/openSUSE:Factory/virtualbox/virtualbox.changes    2023-03-08 
14:51:10.302218342 +0100
+++ /work/SRC/openSUSE:Factory/.virtualbox.new.31432/virtualbox.changes 
2023-03-24 15:16:08.661537046 +0100
@@ -1,0 +2,18 @@
+Tue Mar 21 17:05:39 UTC 2023 - Larry Finger <larry.fin...@gmail.com>
+
+- File "fixes_for_kernel_6.3.patch" is updated for more API changes
+  File "fix_7.0.6_locking_problems.patch" is added. Fixes boo#1209529.
+    Larry Len Rainey and I have worked on this bug for some time. It only
+    happened on systems with large numbers of processors and many virtual
+    machines. We suspected a locking problem, but the thought of auditing
+    the entire code was daunting until it was discovered that there was no
+    problem if the host ran VB 6.1.40. It did not matter what version the
+    guests were running. That essentially eliminated every code part except
+    for vboxdrv.ko. That made the audit tractable. There were two files and
+    a total of 8 places where the locking was suspect. When those were
+    changed, the lockups while using 7.0.6 host code were no longer observed.
+
+    The lockups were infrequent, thus it is impossible to say that we have
+    fixed everything, but the frequency is clearly diminished.
+
+-------------------------------------------------------------------
@@ -5,0 +24 @@
+  spec-cleaner used to remove extra blank line is spec file.

New:
----
  fix_7.0.6_locking_problems.patch

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ virtualbox.spec ++++++
--- /var/tmp/diff_new_pack.bjfH3j/_old  2023-03-24 15:16:10.345546034 +0100
+++ /var/tmp/diff_new_pack.bjfH3j/_new  2023-03-24 15:16:10.357546098 +0100
@@ -162,6 +162,8 @@
 Patch36:        fixes_for_gcc13.patch
 # Fix for kernel 6.3
 Patch37:        fixes_for_kernel_6.3.patch
+# Fix locking problem in 7.0.6
+Patch38:        fix_7.0.6_locking_problems.patch
 #
 # Common BuildRequires for both virtualbox and virtualbox-kmp
 BuildRequires:  %{kernel_module_package_buildreqs}
@@ -498,6 +500,7 @@
 %patch36 -p1
 %endif
 %patch37 -p1
+%patch38 -p1
 
 ### Documents for virtualbox main package ###
 %if %{main_package}

++++++ fix_7.0.6_locking_problems.patch ++++++
Index: VirtualBox-7.0.6/src/VBox/HostDrivers/Support/SUPDrv.cpp
===================================================================
--- VirtualBox-7.0.6.orig/src/VBox/HostDrivers/Support/SUPDrv.cpp
+++ VirtualBox-7.0.6/src/VBox/HostDrivers/Support/SUPDrv.cpp
@@ -871,8 +871,8 @@ void VBOXCALL supdrvDeleteDevExt(PSUPDRV
 
     /* kill the GIP. */
     supdrvGipDestroy(pDevExt);
-    RTSpinlockDestroy(pDevExt->hGipSpinlock);
     pDevExt->hGipSpinlock = NIL_RTSPINLOCK;
+    RTSpinlockDestroy(pDevExt->hGipSpinlock);
 
     supdrvTracerTerm(pDevExt);
 
@@ -5351,8 +5351,8 @@ static int supdrvIOCtl_LdrOpen(PSUPDRVDE
         rc = supdrvLdrAddUsage(pDevExt, pSession, pImage, true 
/*fRing3Usage*/);
     if (RT_FAILURE(rc))
     {
-        supdrvLdrUnlock(pDevExt);
         pImage->uMagic = SUPDRVLDRIMAGE_MAGIC_DEAD;
+        supdrvLdrUnlock(pDevExt);
         RTMemFree(pImage);
         Log(("supdrvIOCtl_LdrOpen(%s): failed - %Rrc\n", pReq->u.In.szName, 
rc));
         return rc;
@@ -6095,6 +6095,7 @@ static int supdrvIOCtl_LdrFree(PSUPDRVDE
             /* free it */
             pUsage->pImage = NULL;
             pUsage->pNext = NULL;
+           RTSpinlockRelease(pDevExt->Spinlock);
             RTMemFree(pUsage);
 
             /*
@@ -6106,7 +6107,10 @@ static int supdrvIOCtl_LdrFree(PSUPDRVDE
                 supdrvLdrSubtractUsage(pDevExt, pImage, 1);
         }
         else
+       {
+           RTSpinlockRelease(pDevExt->Spinlock);
             Log(("supdrvIOCtl_LdrFree: Dangling objects in %p/%s!\n", 
pImage->pvImage, pImage->szName));
+       }
     }
     else
     {
@@ -6334,9 +6338,9 @@ static int supdrvIOCtl_LdrQuerySymbol(PS
         rc = VERR_INVALID_HANDLE;
     }
 
+    pReq->u.Out.pvSymbol = pvSymbol;
     supdrvLdrUnlock(pDevExt);
 
-    pReq->u.Out.pvSymbol = pvSymbol;
     return rc;
 }
 
Index: VirtualBox-7.0.6/src/VBox/HostDrivers/Support/SUPDrvGip.cpp
===================================================================
--- VirtualBox-7.0.6.orig/src/VBox/HostDrivers/Support/SUPDrvGip.cpp
+++ VirtualBox-7.0.6/src/VBox/HostDrivers/Support/SUPDrvGip.cpp
@@ -4537,9 +4537,9 @@ static int supdrvTscDeltaThreadWait(PSUP
  */
 static void supdrvTscDeltaThreadStartMeasurement(PSUPDRVDEVEXT pDevExt, bool 
fForceAll)
 {
+    RTSpinlockAcquire(pDevExt->hTscDeltaSpinlock);
     if (pDevExt->hTscDeltaThread != NIL_RTTHREAD)
     {
-        RTSpinlockAcquire(pDevExt->hTscDeltaSpinlock);
         if (   pDevExt->enmTscDeltaThreadState == 
kTscDeltaThreadState_Listening
             || pDevExt->enmTscDeltaThreadState == 
kTscDeltaThreadState_Measuring)
         {
@@ -4550,9 +4550,9 @@ static void supdrvTscDeltaThreadStartMea
         else if (   pDevExt->enmTscDeltaThreadState == 
kTscDeltaThreadState_WaitAndMeasure
                  && fForceAll)
             pDevExt->fTscThreadRecomputeAllDeltas = true;
-        RTSpinlockRelease(pDevExt->hTscDeltaSpinlock);
         RTThreadUserSignal(pDevExt->hTscDeltaThread);
     }
+    RTSpinlockRelease(pDevExt->hTscDeltaSpinlock);
 }
 
 
@@ -4628,13 +4628,13 @@ static int supdrvTscDeltaThreadInit(PSUP
             }
             else
                 OSDBGPRINT(("supdrvTscDeltaInit: RTThreadCreate failed. 
rc=%Rrc\n", rc));
-            RTSemEventDestroy(pDevExt->hTscDeltaEvent);
             pDevExt->hTscDeltaEvent = NIL_RTSEMEVENT;
+            RTSemEventDestroy(pDevExt->hTscDeltaEvent);
         }
         else
             OSDBGPRINT(("supdrvTscDeltaInit: RTSemEventCreate failed. 
rc=%Rrc\n", rc));
-        RTSpinlockDestroy(pDevExt->hTscDeltaSpinlock);
         pDevExt->hTscDeltaSpinlock = NIL_RTSPINLOCK;
+        RTSpinlockDestroy(pDevExt->hTscDeltaSpinlock);
     }
     else
         OSDBGPRINT(("supdrvTscDeltaInit: RTSpinlockCreate failed. rc=%Rrc\n", 
rc));

++++++ fixes_for_kernel_6.3.patch ++++++
--- /var/tmp/diff_new_pack.bjfH3j/_old  2023-03-24 15:16:10.473546718 +0100
+++ /var/tmp/diff_new_pack.bjfH3j/_new  2023-03-24 15:16:10.477546739 +0100
@@ -1,41 +1,327 @@
-Patch to fix VirtualBox builds on kernel 6.3.0 and newer
-
-Beginning with 6.3, a user is no loncer to write directly info the
-vm_flags member of struct vm_area_struct. It is now necessary to use
-the vm_flags_set() wrapper. Two locations in memobj-r0drv-linux.c are
-affected.
-
-Signed-off-by: Larry Finger <larry.fin...@lwfinger.net>
-
-Index: VirtualBox-7.0.6/src/VBox/Runtime/r0drv/linux/memobj-r0drv-linux.c
+Index: a/src/VBox/Runtime/r0drv/linux/memobj-r0drv-linux.c
 ===================================================================
---- VirtualBox-7.0.6.orig/src/VBox/Runtime/r0drv/linux/memobj-r0drv-linux.c
-+++ VirtualBox-7.0.6/src/VBox/Runtime/r0drv/linux/memobj-r0drv-linux.c
-@@ -1401,8 +1401,12 @@ DECLHIDDEN(int) rtR0MemObjNativeLockUser
+--- a/src/VBox/Runtime/r0drv/linux/memobj-r0drv-linux.c        (revision 
156192)
++++ b/src/VBox/Runtime/r0drv/linux/memobj-r0drv-linux.c        (revision 
156193)
+@@ -1401,7 +1401,11 @@
              while (rc-- > 0)
              {
                  flush_dcache_page(pMemLnx->apPages[rc]);
--                papVMAs[rc]->vm_flags |= VM_DONTCOPY | VM_LOCKED;
--            }
-+# if RTLNX_VER_MIN(6, 3, 0)
-+              vm_flags_set(papVMAs[rc], VM_DONTCOPY | VM_LOCKED);
++#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;
+                 papVMAs[rc]->vm_flags |= VM_DONTCOPY | VM_LOCKED;
 +#endif
-+          }
+             }
  
              LNX_MM_UP_READ(pTask->mm);
- 
-@@ -1873,7 +1877,11 @@ DECLHIDDEN(int) rtR0MemObjNativeMapUser(
+@@ -1872,7 +1876,10 @@
+                     rc = vm_insert_page(vma, ulAddrCur, 
pMemLnxToMap->apPages[iPage]);
                      /* Thes flags help making 100% sure some bad stuff wont 
happen (swap, core, ++).
                       * See remap_pfn_range() in mm/memory.c */
- #if    RTLNX_VER_MIN(3,7,0)
-+# if RTLNX_VER_MIN(6, 3, 0)
+-#if    RTLNX_VER_MIN(3,7,0)
++
++#if    RTLNX_VER_MIN(6,3,0)
 +                    vm_flags_set(vma, VM_DONTEXPAND | VM_DONTDUMP);
-+#else
++#elif  RTLNX_VER_MIN(3,7,0)
                      vma->vm_flags |= VM_DONTEXPAND | VM_DONTDUMP;
-+#endif
  #else
                      vma->vm_flags |= VM_RESERVED;
+Index: s/rc/VBox/Additions/linux/drm/vbox_drv.h
+===================================================================
+--- a/src/VBox/Additions/linux/drm/vbox_drv.h  (revision 156193)
++++ b/src/VBox/Additions/linux/drm/vbox_drv.h  (revision 156194)
+@@ -172,8 +172,12 @@
+ # include <drm/drm_gem.h>
+ #endif
+ 
+-#include <drm/ttm/ttm_bo_api.h>
+-#include <drm/ttm/ttm_bo_driver.h>
++#if RTLNX_VER_MIN(6,3,0)
++# include <drm/ttm/ttm_bo.h>
++#else
++# include <drm/ttm/ttm_bo_api.h>
++# include <drm/ttm/ttm_bo_driver.h>
++#endif
+ #include <drm/ttm/ttm_placement.h>
+ #if RTLNX_VER_MAX(5,13,0) && !RTLNX_RHEL_RANGE(8,6, 8,99)
+ # include <drm/ttm/ttm_memory.h>
+Index: a/src/VBox/Additions/linux/drm/vbox_fb.c
+===================================================================
+--- a/src/VBox/Additions/linux/drm/vbox_fb.c   (revision 156193)
++++ b.src/VBox/Additions/linux/drm/vbox_fb.c   (revision 156194)
+@@ -345,6 +345,7 @@
+       info->flags = FBINFO_DEFAULT | FBINFO_MISC_ALWAYS_SETPAR;
+       info->fbops = &vboxfb_ops;
+ 
++#if RTLNX_VER_MAX(6,3,0)
+       /*
+        * This seems to be done for safety checking that the framebuffer
+        * is not registered twice by different drivers.
+@@ -351,6 +352,7 @@
+        */
+       info->apertures->ranges[0].base = 
pci_resource_start(VBOX_DRM_TO_PCI_DEV(dev), 0);
+       info->apertures->ranges[0].size = 
pci_resource_len(VBOX_DRM_TO_PCI_DEV(dev), 0);
++#endif
+ 
+ #if RTLNX_VER_MIN(5,2,0) || RTLNX_RHEL_MAJ_PREREQ(8,2)
+         /*
+@@ -457,11 +459,14 @@
+       vbox->fbdev = fbdev;
+       spin_lock_init(&fbdev->dirty_lock);
+ 
+-#if RTLNX_VER_MAX(3,17,0) && !RTLNX_RHEL_MAJ_PREREQ(7,2)
++#if RTLNX_VER_MIN(6,3,0)
++      drm_fb_helper_prepare(dev, &fbdev->helper, 32, &vbox_fb_helper_funcs);
++#elif RTLNX_VER_MIN(3,17,0) || RTLNX_RHEL_MIN(7,2)
++      drm_fb_helper_prepare(dev, &fbdev->helper, &vbox_fb_helper_funcs);
++#else
+       fbdev->helper.funcs = &vbox_fb_helper_funcs;
+-#else
+-      drm_fb_helper_prepare(dev, &fbdev->helper, &vbox_fb_helper_funcs);
  #endif
++
+ #if RTLNX_VER_MIN(5,7,0) || RTLNX_RHEL_MIN(8,4) || RTLNX_SUSE_MAJ_PREREQ(15,3)
+         ret = drm_fb_helper_init(dev, &fbdev->helper);
+ #elif RTLNX_VER_MIN(4,11,0) || RTLNX_RHEL_MAJ_PREREQ(7,5)
+@@ -483,7 +488,11 @@
+       /* disable all the possible outputs/crtcs before entering KMS mode */
+       drm_helper_disable_unused_functions(dev);
+ 
++#if RTLNX_VER_MIN(6,3,0)
++      ret = drm_fb_helper_initial_config(&fbdev->helper);
++#else
+       ret = drm_fb_helper_initial_config(&fbdev->helper, 32);
++#endif
+       if (ret)
+               goto err_fini;
+ 
+@@ -498,6 +507,11 @@
+ {
+       struct fb_info *fbdev = VBOX_FBDEV_INFO(vbox->fbdev->helper);
+ 
++#if RTLNX_VER_MIN(6,3,0)
++    fbdev->fix.smem_start = 
++pci_resource_start(VBOX_DRM_TO_PCI_DEV(vbox->fbdev->helper.dev), 0) + 
gpu_addr;
++#else
+       fbdev->fix.smem_start = fbdev->apertures->ranges[0].base + gpu_addr;
++#endif
+       fbdev->fix.smem_len = vbox->available_vram_size - gpu_addr;
+ }
+Index: a/src/VBox/Additions/linux/drm/vbox_main.c
+===================================================================
+--- a/src/VBox/Additions/linux/drm/vbox_main.c (revision 156193)
++++ b/src/VBox/Additions/linux/drm/vbox_main.c (revision 156194)
+@@ -36,6 +36,10 @@
+ #include <drm/drm_fb_helper.h>
+ #include <drm/drm_crtc_helper.h>
+ 
++#if RTLNX_VER_MIN(6,3,0)
++# include <drm/drm_modeset_helper.h>
++#endif
++
+ #include <VBoxVideoGuest.h>
+ #include <VBoxVideoVBE.h>
+ 
+Index: a/src/VBox/Additions/linux/drm/vbox_mode.c
+===================================================================
+--- a/src/VBox/Additions/linux/drm/vbox_mode.c (revision 156193)
++++ b/src/VBox/Additions/linux/drm/vbox_mode.c (revision 156194)
+@@ -39,6 +39,10 @@
+ #include "vbox_drv.h"
+ #include <linux/export.h>
+ #include <drm/drm_crtc_helper.h>
++#if RTLNX_VER_MIN(6,3,0)
++# include <drm/drm_modeset_helper_vtables.h>
++# include <drm/drm_modeset_helper.h>
++#endif
+ #if RTLNX_VER_MIN(3,18,0) || RTLNX_RHEL_MAJ_PREREQ(7,2)
+ # include <drm/drm_plane_helper.h>
+ #endif
+Index: a/src/VBox/Additions/linux/drm/vbox_ttm.c
+===================================================================
+--- a/src/VBox/Additions/linux/drm/vbox_ttm.c  (revision 156193)
++++ b/src/VBox/Additions/linux/drm/vbox_ttm.c  (revision 156194)
+@@ -33,6 +33,11 @@
+  *          Michael Thayer <michael.tha...@oracle.com>
+  */
+ #include "vbox_drv.h"
++
++#if RTLNX_VER_MIN(6,3,0)
++# include <drm/ttm/ttm_tt.h>
++#endif
++
+ #if RTLNX_VER_MIN(5,11,0) || RTLNX_RHEL_MAJ_PREREQ(8,5)
+ # include <drm/drm_gem.h>
+ # include <drm/drm_gem_ttm_helper.h>
+Index: a/src/VBox/Additions/linux/drm/vbox_fb.c
+===================================================================
+--- a/src/VBox/Additions/linux/drm/vbox_fb.c   (revision 156195)
++++ b/src/VBox/Additions/linux/drm/vbox_fb.c   (revision 156196)
+@@ -508,7 +508,7 @@
+       struct fb_info *fbdev = VBOX_FBDEV_INFO(vbox->fbdev->helper);
+ 
+ #if RTLNX_VER_MIN(6,3,0)
+-    fbdev->fix.smem_start = 
++    fbdev->fix.smem_start =
+ pci_resource_start(VBOX_DRM_TO_PCI_DEV(vbox->fbdev->helper.dev), 0) + 
gpu_addr;
+ #else
+       fbdev->fix.smem_start = fbdev->apertures->ranges[0].base + gpu_addr;
+Index: a/src/VBox/Additions/linux/sharedfolders/dirops.c
+===================================================================
+--- a/src/VBox/Additions/linux/sharedfolders/dirops.c  (revision 156194)
++++ b/src/VBox/Additions/linux/sharedfolders/dirops.c  (revision 156195)
+@@ -1045,7 +1045,9 @@
+  * @param   excl    Possible O_EXCL...
+  * @returns 0 on success, Linux error code otherwise
+  */
+-#if RTLNX_VER_MIN(5,12,0) || defined(DOXYGEN_RUNNING)
++#if RTLNX_VER_MIN(6,3,0)
++static int vbsf_inode_create(struct mnt_idmap *idmap, struct inode *parent, 
struct dentry *dentry, umode_t mode, bool excl)
++#elif RTLNX_VER_MIN(5,12,0) || defined(DOXYGEN_RUNNING)
+ static int vbsf_inode_create(struct user_namespace *ns, struct inode *parent, 
struct dentry *dentry, umode_t mode, bool excl)
+ #elif RTLNX_VER_MIN(3,6,0)
+ static int vbsf_inode_create(struct inode *parent, struct dentry *dentry, 
umode_t mode, bool excl)
+@@ -1085,7 +1087,9 @@
+  * @param   mode    file mode
+  * @returns 0 on success, Linux error code otherwise
+  */
+-#if RTLNX_VER_MIN(5,12,0) || defined(DOXYGEN_RUNNING)
++#if RTLNX_VER_MIN(6,3,0)
++static int vbsf_inode_mkdir(struct mnt_idmap *idmap, struct inode *parent, 
struct dentry *dentry, umode_t mode)
++#elif RTLNX_VER_MIN(5,12,0) || defined(DOXYGEN_RUNNING)
+ static int vbsf_inode_mkdir(struct user_namespace *ns, struct inode *parent, 
struct dentry *dentry, umode_t mode)
+ #elif RTLNX_VER_MIN(3,3,0)
+ static int vbsf_inode_mkdir(struct inode *parent, struct dentry *dentry, 
umode_t mode)
+@@ -1200,7 +1204,11 @@
+  * @param   flags       flags
+  * @returns 0 on success, Linux error code otherwise
+  */
+-#if RTLNX_VER_MIN(5,12,0) || defined(DOXYGEN_RUNNING)
++#if RTLNX_VER_MIN(6,3,0)
++static int vbsf_inode_rename(struct mnt_idmap *idmap,
++                             struct inode *old_parent, struct dentry 
*old_dentry,
++                             struct inode *new_parent, struct dentry 
*new_dentry, unsigned flags)
++#elif RTLNX_VER_MIN(5,12,0) || defined(DOXYGEN_RUNNING)
+ static int vbsf_inode_rename(struct user_namespace *ns,
+                              struct inode *old_parent, struct dentry 
*old_dentry,
+                              struct inode *new_parent, struct dentry 
*new_dentry, unsigned flags)
+@@ -1312,7 +1320,9 @@
+ /**
+  * Create a symbolic link.
+  */
+-#if RTLNX_VER_MIN(5,12,0)
++#if RTLNX_VER_MIN(6,3,0)
++static int vbsf_inode_symlink(struct mnt_idmap *idmap, struct inode *parent, 
struct dentry *dentry, const char *target)
++#elif RTLNX_VER_MIN(5,12,0)
+ static int vbsf_inode_symlink(struct user_namespace *ns, struct inode 
*parent, struct dentry *dentry, const char *target)
+ #else
+ static int vbsf_inode_symlink(struct inode *parent, struct dentry *dentry, 
const char *target)
+Index: a/src/VBox/Additions/linux/sharedfolders/utils.c
+===================================================================
+--- a/src/VBox/Additions/linux/sharedfolders/utils.c   (revision 156194)
++++ b/src/VBox/Additions/linux/sharedfolders/utils.c   (revision 156195)
+@@ -697,8 +697,10 @@
+    has inode at all) from these new attributes we derive [kstat] via
+    [generic_fillattr] */
+ #if RTLNX_VER_MIN(2,5,18)
+-
+-# if RTLNX_VER_MIN(5,12,0)
++# if RTLNX_VER_MIN(6,3,0)
++int vbsf_inode_getattr(struct mnt_idmap *idmap, const struct path *path,
++                       struct kstat *kstat, u32 request_mask, unsigned int 
flags)
++# elif RTLNX_VER_MIN(5,12,0)
+ int vbsf_inode_getattr(struct user_namespace *ns, const struct path *path,
+                        struct kstat *kstat, u32 request_mask, unsigned int 
flags)
+ # elif RTLNX_VER_MIN(4,11,0)
+@@ -741,7 +743,9 @@
+ # endif
+     if (rc == 0) {
+         /* Do generic filling in of info. */
+-# if RTLNX_VER_MIN(5,12,0)
++# if RTLNX_VER_MIN(6,3,0)
++        generic_fillattr(idmap, dentry->d_inode, kstat);
++# elif RTLNX_VER_MIN(5,12,0)
+         generic_fillattr(ns, dentry->d_inode, kstat);
+ # else
+         generic_fillattr(dentry->d_inode, kstat);
+@@ -791,7 +795,9 @@
+ /**
+  * Modify inode attributes.
+  */
+-#if RTLNX_VER_MIN(5,12,0)
++#if RTLNX_VER_MIN(6,3,0)
++int vbsf_inode_setattr(struct mnt_idmap *idmap, struct dentry *dentry, struct 
iattr *iattr)
++#elif RTLNX_VER_MIN(5,12,0)
+ int vbsf_inode_setattr(struct user_namespace *ns, struct dentry *dentry, 
struct iattr *iattr)
+ #else
+ int vbsf_inode_setattr(struct dentry *dentry, struct iattr *iattr)
+@@ -815,7 +821,9 @@
+      */
+     iattr->ia_valid |= ATTR_FORCE;
+ #if (RTLNX_VER_RANGE(3,16,39,  3,17,0)) || RTLNX_VER_MIN(4,9,0) || 
(RTLNX_VER_RANGE(4,1,37,  4,2,0)) || RTLNX_UBUNTU_ABI_MIN(4,4,255,208)
+-# if RTLNX_VER_MIN(5,12,0)
++# if RTLNX_VER_MIN(6,3,0)
++    rc = setattr_prepare(idmap, dentry, iattr);
++# elif RTLNX_VER_MIN(5,12,0)
+     rc = setattr_prepare(ns, dentry, iattr);
+ # else
+     rc = setattr_prepare(dentry, iattr);
+Index: a/src/VBox/Additions/linux/sharedfolders/vfsmod.h
+===================================================================
+--- a/src/VBox/Additions/linux/sharedfolders/vfsmod.h  (revision 156194)
++++ b/src/VBox/Additions/linux/sharedfolders/vfsmod.h  (revision 156195)
+@@ -275,7 +275,10 @@
+ extern int  vbsf_inode_revalidate_worker(struct dentry *dentry, bool fForced, 
bool fInodeLocked);
+ extern int  vbsf_inode_revalidate_with_handle(struct dentry *dentry, 
SHFLHANDLE hHostFile, bool fForced, bool fInodeLocked);
+ #if RTLNX_VER_MIN(2,5,18)
+-# if RTLNX_VER_MIN(5,12,0)
++# if RTLNX_VER_MIN(6,3,0)
++extern int  vbsf_inode_getattr(struct mnt_idmap *idmap, const struct path 
*path,
++                               struct kstat *kstat, u32 request_mask, 
unsigned int query_flags);
++# elif RTLNX_VER_MIN(5,12,0)
+ extern int  vbsf_inode_getattr(struct user_namespace *ns, const struct path 
*path,
+                                struct kstat *kstat, u32 request_mask, 
unsigned int query_flags);
+ # elif RTLNX_VER_MIN(4,11,0)
+@@ -286,7 +289,9 @@
+ #else  /* < 2.5.44 */
+ extern int  vbsf_inode_revalidate(struct dentry *dentry);
+ #endif /* < 2.5.44 */
+-#if RTLNX_VER_MIN(5,12,0)
++#if RTLNX_VER_MIN(6,3,0)
++extern int  vbsf_inode_setattr(struct mnt_idmap *idmap, struct dentry 
*dentry, struct iattr *iattr);
++#elif RTLNX_VER_MIN(5,12,0)
+ extern int  vbsf_inode_setattr(struct user_namespace *ns, struct dentry 
*dentry, struct iattr *iattr);
+ #else
+ extern int  vbsf_inode_setattr(struct dentry *dentry, struct iattr *iattr);
+Index: a/src/VBox/Additions/linux/sharedfolders/dirops.c
+===================================================================
+--- a/src/VBox/Additions/linux/sharedfolders/dirops.c  (revision 156196)
++++ b/src/VBox/Additions/linux/sharedfolders/dirops.c  (revision 156197)
+@@ -1038,7 +1038,7 @@
+ /**
+  * Create a new regular file.
+  *
+- * @param   ns      The name space.
++ * @param   idmap   idmap of the mount.
+  * @param   parent  inode of the directory
+  * @param   dentry  directory cache entry
+  * @param   mode    file mode
+@@ -1081,7 +1081,7 @@
+ /**
+  * Create a new directory.
+  *
+- * @param   ns      The name space.
++ * @param   idmap   idmap of the mount.
+  * @param   parent  inode of the directory
+  * @param   dentry  directory cache entry
+  * @param   mode    file mode
+@@ -1196,7 +1196,7 @@
+ /**
+  * Rename a regular file / directory.
+  *
+- * @param   ns          The name space.
++ * @param   idmap       idmap of the mount.
+  * @param   old_parent  inode of the old parent directory
+  * @param   old_dentry  old directory cache entry
+  * @param   new_parent  inode of the new parent directory
 

Reply via email to