Go to:
Gentoo Home
Documentation
Forums
Lists
Bugs
Planet
Store
Wiki
Get Gentoo!
Gentoo's Bugzilla – Attachment 314031 Details for
Bug 419361
app-emulation/virtualbox-modules: error: implicit declaration of function "do_mmap"
Home
|
New
–
[Ex]
|
Browse
|
Search
|
Privacy Policy
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
VirtualBox-Modules 4.1.16 fix against 3.5rc0+
vbox-4116-35rc0.patch (text/plain), 5.05 KB, created by
Manuel Lauss
on 2012-06-03 07:28:51 UTC
(
hide
)
Description:
VirtualBox-Modules 4.1.16 fix against 3.5rc0+
Filename:
MIME Type:
Creator:
Manuel Lauss
Created:
2012-06-03 07:28:51 UTC
Size:
5.05 KB
patch
obsolete
>Make VirtualBox-4.1.16 kernel modules work again on kernels 3.5rc0+ >(after Al Viro removed do_mmap()/do_munmap() from public view). > >Manuel Lauss, 20120603 > >diff -Naurp vboxdrv.old/r0drv/linux/memobj-r0drv-linux.c vboxdrv/r0drv/linux/memobj-r0drv-linux.c >--- vboxdrv.old/r0drv/linux/memobj-r0drv-linux.c 2012-01-19 13:37:00.000000000 +0100 >+++ vboxdrv/r0drv/linux/memobj-r0drv-linux.c 2012-06-03 09:17:16.417650091 +0200 >@@ -491,9 +491,7 @@ DECLHIDDEN(int) rtR0MemObjNativeFree(RTR > Assert(pTask); > if (pTask && pTask->mm) > { >- down_write(&pTask->mm->mmap_sem); > MY_DO_MUNMAP(pTask->mm, (unsigned long)pMemLnx->Core.pv, pMemLnx->Core.cb); >- up_write(&pTask->mm->mmap_sem); > } > } > else >@@ -516,9 +514,7 @@ DECLHIDDEN(int) rtR0MemObjNativeFree(RTR > Assert(pTask); > if (pTask && pTask->mm) > { >- down_write(&pTask->mm->mmap_sem); > MY_DO_MUNMAP(pTask->mm, (unsigned long)pMemLnx->Core.pv, pMemLnx->Core.cb); >- up_write(&pTask->mm->mmap_sem); > } > } > else >@@ -1147,10 +1143,10 @@ static void *rtR0MemObjLinuxDoMmap(RTR3P > } > > if (R3PtrFixed != (RTR3PTR)-1) >- ulAddr = do_mmap(NULL, R3PtrFixed, cb, fLnxProt, MAP_SHARED | MAP_ANONYMOUS | MAP_FIXED, 0); >+ ulAddr = MY_DO_MMAP(NULL, R3PtrFixed, cb, fLnxProt, MAP_SHARED | MAP_ANONYMOUS | MAP_FIXED, 0); > else > { >- ulAddr = do_mmap(NULL, 0, cb, fLnxProt, MAP_SHARED | MAP_ANONYMOUS, 0); >+ ulAddr = MY_DO_MMAP(NULL, 0, cb, fLnxProt, MAP_SHARED | MAP_ANONYMOUS, 0); > if ( !(ulAddr & ~PAGE_MASK) > && (ulAddr & (uAlignment - 1))) > { >@@ -1192,9 +1188,7 @@ DECLHIDDEN(int) rtR0MemObjNativeReserveU > pMemLnx = (PRTR0MEMOBJLNX)rtR0MemObjNew(sizeof(*pMemLnx), RTR0MEMOBJTYPE_RES_VIRT, pv, cb); > if (!pMemLnx) > { >- down_write(&pTask->mm->mmap_sem); > MY_DO_MUNMAP(pTask->mm, (unsigned long)pv, cb); >- up_write(&pTask->mm->mmap_sem); > return VERR_NO_MEMORY; > } > >@@ -1381,7 +1375,9 @@ DECLHIDDEN(int) rtR0MemObjNativeMapUser( > * Allocate user space mapping. > */ > void *pv; >+#ifndef LINUX_NO_DOMMAP > down_write(&pTask->mm->mmap_sem); >+#endif > pv = rtR0MemObjLinuxDoMmap(R3PtrFixed, pMemLnxToMap->Core.cb, uAlignment, pTask, fProt); > if (pv != (void *)-1) > { >@@ -1394,6 +1390,9 @@ DECLHIDDEN(int) rtR0MemObjNativeMapUser( > const size_t cPages = pMemLnxToMap->Core.cb >> PAGE_SHIFT; > size_t iPage; > >+#ifdef LINUX_NO_DOMMAP >+ down_write(&pTask->mm->mmap_sem); >+#endif > rc = 0; > if (pMemLnxToMap->cPages) > { >@@ -1428,6 +1427,9 @@ DECLHIDDEN(int) rtR0MemObjNativeMapUser( > if (rc) > { > rc = VERR_NO_MEMORY; >+#ifdef LINUX_NO_DOMMAP >+ up_write(&pTask->mm->mmap_sem); >+#endif > break; > } > } >@@ -1471,6 +1473,9 @@ DECLHIDDEN(int) rtR0MemObjNativeMapUser( > if (rc) > { > rc = VERR_NO_MEMORY; >+#ifdef LINUX_NO_DOMMAP >+ up_write(&pTask->mm->mmap_sem); >+#endif > break; > } > } >@@ -1489,14 +1494,20 @@ DECLHIDDEN(int) rtR0MemObjNativeMapUser( > return VINF_SUCCESS; > } > >+ up_write(&pTask->mm->mmap_sem); > /* > * Bail out. > */ > MY_DO_MUNMAP(pTask->mm, (unsigned long)pv, pMemLnxToMap->Core.cb); >+#ifndef LINUX_NO_DOMMAP >+ down_write(&pTask->mm->mmap_sem); >+#endif > } >- up_write(&pTask->mm->mmap_sem); > rtR0MemObjDelete(&pMemLnx->Core); > } >+#ifndef LINUX_NO_DOMMAP >+ up_write(&pTask->mm->mmap_sem); >+#endif > #ifdef VBOX_USE_PAE_HACK > __free_page(pDummyPage); > #endif >diff -Naurp vboxdrv.old/r0drv/linux/the-linux-kernel.h vboxdrv/r0drv/linux/the-linux-kernel.h >--- vboxdrv.old/r0drv/linux/the-linux-kernel.h 2012-01-31 15:17:37.000000000 +0100 >+++ vboxdrv/r0drv/linux/the-linux-kernel.h 2012-06-03 09:20:33.996406929 +0200 >@@ -269,6 +269,24 @@ DECLINLINE(unsigned long) msecs_to_jiffi > # endif /* !RT_ARCH_AMD64 */ > #endif /* !NO_REDHAT_HACKS */ > >+/* 3.5rc0 gets rid of do_mmap() and do_munmap(). >+ * need to change vm locking a bit since the vm_*() calls take mmap_sem internally >+ */ >+#ifndef do_mmap >+# define LINUX_NO_DOMMAP >+# define MY_DO_MMAP(a,b,c,d,e,f) vm_mmap(a, b, c, d, e, (f) >> PAGE_SHIFT) >+# define MY_DO_MUNMAP(a,b,c) vm_munmap(b, c) >+#else >+# undef LINUX_NO_DOMMAP >+# define MY_DO_MMAP(a,b,c,d,e,f) do_mmap(a, b, c, d, e, f) >+# define MY_DO_MUNMAP(a,b,c) \ >+ { \ >+ down_write(&(a)->mmap_sem); \ >+ do_munmap(a, b, c); \ >+ up_write(&(a)->mmap_sem); \ >+ } >+#endif >+ > #ifndef MY_DO_MUNMAP > # define MY_DO_MUNMAP(a,b,c) do_munmap(a, b, c) > #endif
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 419361
:
313937
|
313939
| 314031 |
314345
|
353502