|
Lines 1835-1841
VMCIReleasePages(struct page **pages, /
Link Here
|
| 1835 |
if (dirty) { |
1835 |
if (dirty) { |
| 1836 |
set_page_dirty(pages[i]); |
1836 |
set_page_dirty(pages[i]); |
| 1837 |
} |
1837 |
} |
|
|
1838 |
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 5, 99) |
| 1839 |
put_page(pages[i]); |
| 1840 |
#else |
| 1838 |
page_cache_release(pages[i]); |
1841 |
page_cache_release(pages[i]); |
|
|
1842 |
#endif |
| 1839 |
pages[i] = NULL; |
1843 |
pages[i] = NULL; |
| 1840 |
} |
1844 |
} |
| 1841 |
} |
1845 |
} |
|
Lines 2049-2054
VMCIHost_GetUserMemory(VA64 produceUVA,
Link Here
|
| 2049 |
int err = VMCI_SUCCESS; |
2053 |
int err = VMCI_SUCCESS; |
| 2050 |
|
2054 |
|
| 2051 |
down_write(¤t->mm->mmap_sem); |
2055 |
down_write(¤t->mm->mmap_sem); |
|
|
2056 |
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 5, 99) |
| 2057 |
retval = get_user_pages((VA)produceUVA, |
| 2058 |
produceQ->kernelIf->numPages, |
| 2059 |
1, 0, |
| 2060 |
produceQ->kernelIf->u.h.headerPage, |
| 2061 |
NULL); |
| 2062 |
#else |
| 2052 |
retval = get_user_pages(current, |
2063 |
retval = get_user_pages(current, |
| 2053 |
current->mm, |
2064 |
current->mm, |
| 2054 |
(VA)produceUVA, |
2065 |
(VA)produceUVA, |
|
Lines 2056-2061
VMCIHost_GetUserMemory(VA64 produceUVA,
Link Here
|
| 2056 |
1, 0, |
2067 |
1, 0, |
| 2057 |
produceQ->kernelIf->u.h.headerPage, |
2068 |
produceQ->kernelIf->u.h.headerPage, |
| 2058 |
NULL); |
2069 |
NULL); |
|
|
2070 |
#endif |
| 2059 |
if (retval < produceQ->kernelIf->numPages) { |
2071 |
if (retval < produceQ->kernelIf->numPages) { |
| 2060 |
Log("get_user_pages(produce) failed (retval=%d)\n", retval); |
2072 |
Log("get_user_pages(produce) failed (retval=%d)\n", retval); |
| 2061 |
VMCIReleasePages(produceQ->kernelIf->u.h.headerPage, retval, FALSE); |
2073 |
VMCIReleasePages(produceQ->kernelIf->u.h.headerPage, retval, FALSE); |
|
Lines 2063-2068
VMCIHost_GetUserMemory(VA64 produceUVA,
Link Here
|
| 2063 |
goto out; |
2075 |
goto out; |
| 2064 |
} |
2076 |
} |
| 2065 |
|
2077 |
|
|
|
2078 |
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 5, 99) |
| 2079 |
retval = get_user_pages((VA)consumeUVA, |
| 2080 |
consumeQ->kernelIf->numPages, |
| 2081 |
1, 0, |
| 2082 |
consumeQ->kernelIf->u.h.headerPage, |
| 2083 |
NULL); |
| 2084 |
#else |
| 2066 |
retval = get_user_pages(current, |
2085 |
retval = get_user_pages(current, |
| 2067 |
current->mm, |
2086 |
current->mm, |
| 2068 |
(VA)consumeUVA, |
2087 |
(VA)consumeUVA, |
|
Lines 2070-2075
VMCIHost_GetUserMemory(VA64 produceUVA,
Link Here
|
| 2070 |
1, 0, |
2089 |
1, 0, |
| 2071 |
consumeQ->kernelIf->u.h.headerPage, |
2090 |
consumeQ->kernelIf->u.h.headerPage, |
| 2072 |
NULL); |
2091 |
NULL); |
|
|
2092 |
#endif |
| 2073 |
if (retval < consumeQ->kernelIf->numPages) { |
2093 |
if (retval < consumeQ->kernelIf->numPages) { |
| 2074 |
Log("get_user_pages(consume) failed (retval=%d)\n", retval); |
2094 |
Log("get_user_pages(consume) failed (retval=%d)\n", retval); |
| 2075 |
VMCIReleasePages(consumeQ->kernelIf->u.h.headerPage, retval, FALSE); |
2095 |
VMCIReleasePages(consumeQ->kernelIf->u.h.headerPage, retval, FALSE); |