VirtualBox

Ticket #19644: fixes_for_module_memory.patch

File fixes_for_module_memory.patch, 1.7 KB (added by Larry Finger, 4 years ago)

Fixes for module memory

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

    old new RT_EXPORT_SYMBOL(RTR0MemExecDonate);  
    153153
    154154
    155155#ifdef RTMEMALLOC_EXEC_VM_AREA
     156
     157
    156158/**
    157159 * Allocate executable kernel memory in the module range.
    158160 *
    static PRTMEMHDR rtR0MemAllocExecVmArea(  
    168170    struct vm_struct   *pVmArea;
    169171    size_t              iPage;
    170172
     173# if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 8, 0)
     174    pVmArea = __get_vm_area_caller(cbAlloc, VM_ALLOC, MODULES_VADDR, MODULES_END,
     175                                   __builtin_return_address(0));
     176#else
    171177    pVmArea = __get_vm_area(cbAlloc, VM_ALLOC, MODULES_VADDR, MODULES_END);
     178#endif
    172179    if (!pVmArea)
    173180        return NULL;
    174181    pVmArea->nr_pages = 0;    /* paranoia? */
    static PRTMEMHDR rtR0MemAllocExecVmArea(  
    201208# endif
    202209        pVmArea->nr_pages = cPages;
    203210        pVmArea->pages    = papPages;
    204         if (!map_vm_area(pVmArea, PAGE_KERNEL_EXEC,
     211# if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 8, 0)
     212        unsigned long start = (unsigned long)pVmArea->addr;
     213        unsigned long size = get_vm_area_size(pVmArea);
     214
     215        if (!map_kernel_range(start, size, PAGE_KERNEL_EXEC, papPages))
     216#else
     217        if (!map_vm_area(pVmArea, PAGE_KERNEL_EXEC,
    205218# if LINUX_VERSION_CODE < KERNEL_VERSION(3, 17, 0)
    206219                         &papPagesIterator
    207220# else
    208221                         papPages
    209222# endif
    210223                         ))
    211         {
     224#endif
     225        {
    212226            PRTMEMLNXHDREX pHdrEx = (PRTMEMLNXHDREX)pVmArea->addr;
    213227            pHdrEx->pVmArea     = pVmArea;
    214228            pHdrEx->pvDummy     = NULL;

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