--- a/vmmon-only/linux/hostif.c 2016-08-13 16:54:18.935207507 +0300 +++ a/vmmon-only/linux/hostif.c 2016-08-13 16:53:52.981424256 +0300 @@ -140,6 +140,10 @@ static DECLARE_TASKLET(timerTasklet, Hos */ #define LOCKED_PAGE_SLACK 10000 +#if LINUX_VERSION_CODE > KERNEL_VERSION(4, 7, 0) +#define NR_ANON_PAGES NR_ANON_MAPPED +#endif + static struct { Atomic_uint64 uptimeBase; VersionedAtomic version; @@ -1167,7 +1167,7 @@ int retval; down_read(¤t->mm->mmap_sem); - retval = get_user_pages(current, current->mm, (unsigned long)uvAddr, + retval = get_user_pages((unsigned long)uvAddr, numPages, 0, 0, ppages, NULL); up_read(¤t->mm->mmap_sem); --- a/vmnet-only/userif.c 2015-11-26 02:53:18.000000000 +0100 +++ a/vmnet-only/userif.c 2016-11-08 08:36:41.765747532 +0100 @@ -113,7 +113,7 @@ int retval; down_read(¤t->mm->mmap_sem); - retval = get_user_pages(current, current->mm, addr, + retval = get_user_pages(addr, 1, 1, 0, &page, NULL); up_read(¤t->mm->mmap_sem); --- a/vmnet-only/netif.c 2015-11-26 02:53:17.000000000 +0100 +++ a/vmnet-only/netif.c 2016-11-08 08:45:26.389173779 +0100 @@ -465,7 +465,7 @@ VNetSend(&netIf->port.jack, skb); netIf->stats.tx_packets++; - dev->trans_start = jiffies; + dev->_tx->trans_start = jiffies; return 0; } --- a/vmci-only/linux/vmciKernelIf.c 2016-11-08 08:46:04.505732020 +0100 +++ a/vmci-only/linux/vmciKernelIf.c 2016-11-08 08:48:10.626317237 +0100 @@ -2049,9 +2049,7 @@ int err = VMCI_SUCCESS; down_write(¤t->mm->mmap_sem); - retval = get_user_pages(current, - current->mm, - (VA)produceUVA, + retval = get_user_pages((VA)produceUVA, produceQ->kernelIf->numPages, 1, 0, produceQ->kernelIf->u.h.headerPage, @@ -2063,9 +2061,7 @@ goto out; } - retval = get_user_pages(current, - current->mm, - (VA)consumeUVA, + retval = get_user_pages((VA)consumeUVA, consumeQ->kernelIf->numPages, 1, 0, consumeQ->kernelIf->u.h.headerPage, --- a/vmci-only/linux/driver.c 2016-11-08 08:49:23.429591906 +0100 +++ a/vmci-only/linux/driver.c 2016-11-08 08:50:16.072840800 +0100 @@ -1468,7 +1468,7 @@ int retval; down_read(¤t->mm->mmap_sem); - retval = get_user_pages(current, current->mm, addr, + retval = get_user_pages(addr, 1, 1, 0, &page, NULL); up_read(¤t->mm->mmap_sem); --- a/vmci-only/linux/vmciKernelIf.c 2016-11-08 08:51:28.016021897 +0100 +++ a/vmci-only/linux/vmciKernelIf.c 2016-11-08 08:55:10.919677197 +0100 @@ -1835,7 +1835,7 @@ if (dirty) { set_page_dirty(pages[i]); } - page_cache_release(pages[i]); + put_page(pages[i]); pages[i] = NULL; } } --- a/vmblock-only/linux/inode.c 2016-11-08 09:02:54.902853782 +0100 +++ a/vmblock-only/linux/inode.c 2016-11-08 09:07:26.832475083 +0100 @@ -28,6 +28,7 @@ #include #include #include +#include #include "vmblockInt.h" #include "filesystem.h" @@ -33,6 +33,20 @@ #include "filesystem.h" #include "block.h" +inline int readlink_copy(char __user *buffer, int buflen, const char *link) +{ + int len = PTR_ERR(link); + if (IS_ERR(link)) + goto out; + + len = strlen(link); + if (len > (unsigned) buflen) + len = buflen; + if (copy_to_user(buffer, link, len)) + len = -EFAULT; +out: + return len; +} /* Inode operations */