VirtualBox

Ticket #19644: fixes_for_mm_struct.patch

File fixes_for_mm_struct.patch, 5.1 KB (added by Larry Finger, 4 years ago)

Apply fixes needed for kernel 5.8 difference in struct mm_struct

  • vboxdrv/r0drv/linux/memobj-r0drv-linux.c

    old new static void *rtR0MemObjLinuxDoMmap(RTR3P  
    222222#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 5, 0)
    223223        ulAddr = vm_mmap(NULL, R3PtrFixed, cb, fLnxProt, MAP_SHARED | MAP_ANONYMOUS | MAP_FIXED, 0);
    224224#else
     225#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 8, 0)
    225226        down_write(&pTask->mm->mmap_sem);
     227#else
     228        down_write(&pTask->mm->mmap_lock);
     229#endif
    226230        ulAddr = do_mmap(NULL, R3PtrFixed, cb, fLnxProt, MAP_SHARED | MAP_ANONYMOUS | MAP_FIXED, 0);
     231#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 8, 0)
    227232        up_write(&pTask->mm->mmap_sem);
     233#else
     234        up_write(&pTask->mm->mmap_lock);
     235#endif
    228236#endif
    229237    }
    230238    else
    static void *rtR0MemObjLinuxDoMmap(RTR3P  
    232240#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 5, 0)
    233241        ulAddr = vm_mmap(NULL, 0, cb, fLnxProt, MAP_SHARED | MAP_ANONYMOUS, 0);
    234242#else
     243#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 8, 0)
    235244        down_write(&pTask->mm->mmap_sem);
     245#else
     246        down_write(&pTask->mm->mmap_lock);
     247#endif
    236248        ulAddr = do_mmap(NULL, 0, cb, fLnxProt, MAP_SHARED | MAP_ANONYMOUS, 0);
     249#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 8, 0)
    237250        up_write(&pTask->mm->mmap_sem);
     251#else
     252        up_write(&pTask->mm->mmap_lock);
     253#endif
    238254#endif
    239255        if (    !(ulAddr & ~PAGE_MASK)
    240256            &&  (ulAddr & (uAlignment - 1)))
    static void rtR0MemObjLinuxDoMunmap(void  
    269285    Assert(pTask == current); RT_NOREF_PV(pTask);
    270286    vm_munmap((unsigned long)pv, cb);
    271287#elif defined(USE_RHEL4_MUNMAP)
     288#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 8, 0)
    272289    down_write(&pTask->mm->mmap_sem);
     290#else
     291    down_write(&pTask->mm->mmap_lock);
     292#endif
    273293    do_munmap(pTask->mm, (unsigned long)pv, cb, 0); /* should it be 1 or 0? */
     294#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 8, 0)
    274295    up_write(&pTask->mm->mmap_sem);
    275296#else
     297    up_write(&pTask->mm->mmap_lock);
     298#endif
     299#else
     300#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 8, 0)
    276301    down_write(&pTask->mm->mmap_sem);
     302#else
     303    down_write(&pTask->mm->mmap_lock);
     304#endif
    277305    do_munmap(pTask->mm, (unsigned long)pv, cb);
     306#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 8, 0)
    278307    up_write(&pTask->mm->mmap_sem);
     308#else
     309    up_write(&pTask->mm->mmap_lock);
     310#endif
    279311#endif
    280312}
    281313
    DECLHIDDEN(int) rtR0MemObjNativeFree(RTR  
    593625                size_t              iPage;
    594626                Assert(pTask);
    595627                if (pTask && pTask->mm)
    596                     down_read(&pTask->mm->mmap_sem);
     628#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 8, 0)
     629                    down_read(&pTask->mm->mmap_sem);
     630#else
     631                    down_read(&pTask->mm->mmap_lock);
     632#endif
    597633
    598634                iPage = pMemLnx->cPages;
    599635                while (iPage-- > 0)
    DECLHIDDEN(int) rtR0MemObjNativeFree(RTR  
    608644                }
    609645
    610646                if (pTask && pTask->mm)
    611                     up_read(&pTask->mm->mmap_sem);
     647#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 8, 0)
     648                    up_read(&pTask->mm->mmap_sem);
     649#else
     650                    up_read(&pTask->mm->mmap_lock);
     651#endif
    612652            }
    613653            /* else: kernel memory - nothing to do here. */
    614654            break;
    DECLHIDDEN(int) rtR0MemObjNativeLockUser  
    10761116    papVMAs = (struct vm_area_struct **)RTMemAlloc(sizeof(*papVMAs) * cPages);
    10771117    if (papVMAs)
    10781118    {
    1079         down_read(&pTask->mm->mmap_sem);
     1119#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 8, 0)
     1120        down_read(&pTask->mm->mmap_sem);
     1121#else
     1122        down_read(&pTask->mm->mmap_lock);
     1123#endif
    10801124
    10811125        /*
    10821126         * Get user pages.
    DECLHIDDEN(int) rtR0MemObjNativeLockUser  
    11621206                papVMAs[rc]->vm_flags |= VM_DONTCOPY | VM_LOCKED;
    11631207            }
    11641208
    1165             up_read(&pTask->mm->mmap_sem);
     1209#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 8, 0)
     1210            up_read(&pTask->mm->mmap_sem);
     1211#else
     1212            up_read(&pTask->mm->mmap_lock);
     1213#endif
    11661214
    11671215            RTMemFree(papVMAs);
    11681216
    DECLHIDDEN(int) rtR0MemObjNativeLockUser  
    11891237#endif
    11901238        }
    11911239
    1192         up_read(&pTask->mm->mmap_sem);
     1240#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 8, 0)
     1241        up_read(&pTask->mm->mmap_sem);
     1242#else
     1243        up_read(&pTask->mm->mmap_lock);
     1244#endif
    11931245
    11941246        RTMemFree(papVMAs);
    11951247        rc = VERR_LOCK_FAILED;
    DECLHIDDEN(int) rtR0MemObjNativeMapUser(  
    16041656            const size_t    cPages    = (offSub + cbSub) >> PAGE_SHIFT;
    16051657            size_t          iPage;
    16061658
    1607             down_write(&pTask->mm->mmap_sem);
     1659#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 8, 0)
     1660            down_write(&pTask->mm->mmap_sem);
     1661#else
     1662            down_write(&pTask->mm->mmap_lock);
     1663#endif
    16081664
    16091665            rc = VINF_SUCCESS;
    16101666            if (pMemLnxToMap->cPages)
    DECLHIDDEN(int) rtR0MemObjNativeMapUser(  
    17211777            }
    17221778#endif /* CONFIG_NUMA_BALANCING */
    17231779
    1724             up_write(&pTask->mm->mmap_sem);
     1780#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 8, 0)
     1781            up_write(&pTask->mm->mmap_sem);
     1782#else
     1783            up_write(&pTask->mm->mmap_lock);
     1784#endif
    17251785
    17261786            if (RT_SUCCESS(rc))
    17271787            {

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy