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); |