Ticket #19644: fixes_for_module_memory.patch
| File fixes_for_module_memory.patch, 1.7 KB (added by , 4 years ago) |
|---|
-
vboxdrv/r0drv/linux/alloc-r0drv-linux.c
old new RT_EXPORT_SYMBOL(RTR0MemExecDonate); 153 153 154 154 155 155 #ifdef RTMEMALLOC_EXEC_VM_AREA 156 157 156 158 /** 157 159 * Allocate executable kernel memory in the module range. 158 160 * … … static PRTMEMHDR rtR0MemAllocExecVmArea( 168 170 struct vm_struct *pVmArea; 169 171 size_t iPage; 170 172 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 171 177 pVmArea = __get_vm_area(cbAlloc, VM_ALLOC, MODULES_VADDR, MODULES_END); 178 #endif 172 179 if (!pVmArea) 173 180 return NULL; 174 181 pVmArea->nr_pages = 0; /* paranoia? */ … … static PRTMEMHDR rtR0MemAllocExecVmArea( 201 208 # endif 202 209 pVmArea->nr_pages = cPages; 203 210 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, 205 218 # if LINUX_VERSION_CODE < KERNEL_VERSION(3, 17, 0) 206 219 &papPagesIterator 207 220 # else 208 221 papPages 209 222 # endif 210 223 )) 211 { 224 #endif 225 { 212 226 PRTMEMLNXHDREX pHdrEx = (PRTMEMLNXHDREX)pVmArea->addr; 213 227 pHdrEx->pVmArea = pVmArea; 214 228 pHdrEx->pvDummy = NULL;

