Ticket #19644: fixes_for_mm_struct.patch
| File fixes_for_mm_struct.patch, 5.1 KB (added by , 4 years ago) |
|---|
-
vboxdrv/r0drv/linux/memobj-r0drv-linux.c
old new static void *rtR0MemObjLinuxDoMmap(RTR3P 222 222 #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 5, 0) 223 223 ulAddr = vm_mmap(NULL, R3PtrFixed, cb, fLnxProt, MAP_SHARED | MAP_ANONYMOUS | MAP_FIXED, 0); 224 224 #else 225 #if LINUX_VERSION_CODE < KERNEL_VERSION(5, 8, 0) 225 226 down_write(&pTask->mm->mmap_sem); 227 #else 228 down_write(&pTask->mm->mmap_lock); 229 #endif 226 230 ulAddr = do_mmap(NULL, R3PtrFixed, cb, fLnxProt, MAP_SHARED | MAP_ANONYMOUS | MAP_FIXED, 0); 231 #if LINUX_VERSION_CODE < KERNEL_VERSION(5, 8, 0) 227 232 up_write(&pTask->mm->mmap_sem); 233 #else 234 up_write(&pTask->mm->mmap_lock); 235 #endif 228 236 #endif 229 237 } 230 238 else … … static void *rtR0MemObjLinuxDoMmap(RTR3P 232 240 #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 5, 0) 233 241 ulAddr = vm_mmap(NULL, 0, cb, fLnxProt, MAP_SHARED | MAP_ANONYMOUS, 0); 234 242 #else 243 #if LINUX_VERSION_CODE < KERNEL_VERSION(5, 8, 0) 235 244 down_write(&pTask->mm->mmap_sem); 245 #else 246 down_write(&pTask->mm->mmap_lock); 247 #endif 236 248 ulAddr = do_mmap(NULL, 0, cb, fLnxProt, MAP_SHARED | MAP_ANONYMOUS, 0); 249 #if LINUX_VERSION_CODE < KERNEL_VERSION(5, 8, 0) 237 250 up_write(&pTask->mm->mmap_sem); 251 #else 252 up_write(&pTask->mm->mmap_lock); 253 #endif 238 254 #endif 239 255 if ( !(ulAddr & ~PAGE_MASK) 240 256 && (ulAddr & (uAlignment - 1))) … … static void rtR0MemObjLinuxDoMunmap(void 269 285 Assert(pTask == current); RT_NOREF_PV(pTask); 270 286 vm_munmap((unsigned long)pv, cb); 271 287 #elif defined(USE_RHEL4_MUNMAP) 288 #if LINUX_VERSION_CODE < KERNEL_VERSION(5, 8, 0) 272 289 down_write(&pTask->mm->mmap_sem); 290 #else 291 down_write(&pTask->mm->mmap_lock); 292 #endif 273 293 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) 274 295 up_write(&pTask->mm->mmap_sem); 275 296 #else 297 up_write(&pTask->mm->mmap_lock); 298 #endif 299 #else 300 #if LINUX_VERSION_CODE < KERNEL_VERSION(5, 8, 0) 276 301 down_write(&pTask->mm->mmap_sem); 302 #else 303 down_write(&pTask->mm->mmap_lock); 304 #endif 277 305 do_munmap(pTask->mm, (unsigned long)pv, cb); 306 #if LINUX_VERSION_CODE < KERNEL_VERSION(5, 8, 0) 278 307 up_write(&pTask->mm->mmap_sem); 308 #else 309 up_write(&pTask->mm->mmap_lock); 310 #endif 279 311 #endif 280 312 } 281 313 … … DECLHIDDEN(int) rtR0MemObjNativeFree(RTR 593 625 size_t iPage; 594 626 Assert(pTask); 595 627 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 597 633 598 634 iPage = pMemLnx->cPages; 599 635 while (iPage-- > 0) … … DECLHIDDEN(int) rtR0MemObjNativeFree(RTR 608 644 } 609 645 610 646 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 612 652 } 613 653 /* else: kernel memory - nothing to do here. */ 614 654 break; … … DECLHIDDEN(int) rtR0MemObjNativeLockUser 1076 1116 papVMAs = (struct vm_area_struct **)RTMemAlloc(sizeof(*papVMAs) * cPages); 1077 1117 if (papVMAs) 1078 1118 { 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 1080 1124 1081 1125 /* 1082 1126 * Get user pages. … … DECLHIDDEN(int) rtR0MemObjNativeLockUser 1162 1206 papVMAs[rc]->vm_flags |= VM_DONTCOPY | VM_LOCKED; 1163 1207 } 1164 1208 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 1166 1214 1167 1215 RTMemFree(papVMAs); 1168 1216 … … DECLHIDDEN(int) rtR0MemObjNativeLockUser 1189 1237 #endif 1190 1238 } 1191 1239 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 1193 1245 1194 1246 RTMemFree(papVMAs); 1195 1247 rc = VERR_LOCK_FAILED; … … DECLHIDDEN(int) rtR0MemObjNativeMapUser( 1604 1656 const size_t cPages = (offSub + cbSub) >> PAGE_SHIFT; 1605 1657 size_t iPage; 1606 1658 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 1608 1664 1609 1665 rc = VINF_SUCCESS; 1610 1666 if (pMemLnxToMap->cPages) … … DECLHIDDEN(int) rtR0MemObjNativeMapUser( 1721 1777 } 1722 1778 #endif /* CONFIG_NUMA_BALANCING */ 1723 1779 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 1725 1785 1726 1786 if (RT_SUCCESS(rc)) 1727 1787 {

