diff -rupN a/VideoMasterHD_SDK_Linux_v5.21/Drivers/ASI/x64/USBufMngr_Linux.c b/VideoMasterHD_SDK_Linux_v5.21/Drivers/ASI/x64/USBufMngr_Linux.c
--- a/VideoMasterHD_SDK_Linux_v5.21/Drivers/ASI/x64/USBufMngr_Linux.c	2016-07-29 14:05:12.000000000 +0200
+++ b/VideoMasterHD_SDK_Linux_v5.21/Drivers/ASI/x64/USBufMngr_Linux.c	2017-03-03 09:39:57.538082583 +0100
@@ -15,6 +15,7 @@
 #include "KernelObjects.h"
 #include "SkelIoctls.h"
 #include <linux/pagemap.h>
+#include <linux/version.h>
 
 /***** FUNCTIONS DEFINITION *******************************************************************************************/
 
@@ -48,7 +49,13 @@ BOOL32 USBufMngr_RetrievePages( PDEVICE_
       ppPage_X = (struct page **)pDescr_X->pOSData_v;
 
       down_read(&current->mm->mmap_sem);
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4,6,0)
       RetVal_i = get_user_pages(current, current->mm, ((unsigned long) pUSBufAddr), NbPages_UL, 1, 0, ppPage_X, NULL);
+#elif LINUX_VERSION_CODE < KERNEL_VERSION(4,9,0)
+      RetVal_i = get_user_pages(((unsigned long) pUSBufAddr), NbPages_UL, 1, 0, ppPage_X, NULL);
+#else
+      RetVal_i = get_user_pages(((unsigned long) pUSBufAddr), NbPages_UL, 0, ppPage_X, NULL);
+#endif
       up_read(&current->mm->mmap_sem);
 
       if (RetVal_i < 0) 
@@ -131,7 +138,11 @@ ULONG i;
          if (!PageReserved(ppPage_X[i])) 
             SetPageDirty(ppPage_X[i]);
          else RetailOutput("Page %d is reserverd\n",i);
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4,6,0)
          page_cache_release(ppPage_X[i]);
+#else
+         put_page(ppPage_X[i]);
+#endif
       }
 
       kfree(pDescr_X->pOSData_v);
diff -rupN a/VideoMasterHD_SDK_Linux_v5.21/Drivers/ASI/x86/USBufMngr_Linux.c b/VideoMasterHD_SDK_Linux_v5.21/Drivers/ASI/x86/USBufMngr_Linux.c
--- a/VideoMasterHD_SDK_Linux_v5.21/Drivers/ASI/x86/USBufMngr_Linux.c	2016-07-29 14:05:12.000000000 +0200
+++ b/VideoMasterHD_SDK_Linux_v5.21/Drivers/ASI/x86/USBufMngr_Linux.c	2017-03-03 09:43:25.957804435 +0100
@@ -15,6 +15,7 @@
 #include "KernelObjects.h"
 #include "SkelIoctls.h"
 #include <linux/pagemap.h>
+#include <linux/version.h>
 
 /***** FUNCTIONS DEFINITION *******************************************************************************************/
 
@@ -48,7 +49,13 @@ BOOL32 USBufMngr_RetrievePages( PDEVICE_
       ppPage_X = (struct page **)pDescr_X->pOSData_v;
 
       down_read(&current->mm->mmap_sem);
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4,6,0)
       RetVal_i = get_user_pages(current, current->mm, ((unsigned long) pUSBufAddr), NbPages_UL, 1, 0, ppPage_X, NULL);
+#elif LINUX_VERSION_CODE < KERNEL_VERSION(4,9,0)
+      RetVal_i = get_user_pages(((unsigned long) pUSBufAddr), NbPages_UL, 1, 0, ppPage_X, NULL);
+#else
+      RetVal_i = get_user_pages(((unsigned long) pUSBufAddr), NbPages_UL, 0, ppPage_X, NULL);
+#endif
       up_read(&current->mm->mmap_sem);
 
       if (RetVal_i < 0) 
@@ -131,7 +138,11 @@ ULONG i;
          if (!PageReserved(ppPage_X[i])) 
             SetPageDirty(ppPage_X[i]);
          else RetailOutput("Page %d is reserverd\n",i);
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4,6,0)
          page_cache_release(ppPage_X[i]);
+#else
+         put_page(ppPage_X[i]);
+#endif
       }
 
       kfree(pDescr_X->pOSData_v);
diff -rupN a/VideoMasterHD_SDK_Linux_v5.21/Drivers/DVI/x64/USBufMngr_Linux.c b/VideoMasterHD_SDK_Linux_v5.21/Drivers/DVI/x64/USBufMngr_Linux.c
--- a/VideoMasterHD_SDK_Linux_v5.21/Drivers/DVI/x64/USBufMngr_Linux.c	2016-07-29 14:05:12.000000000 +0200
+++ b/VideoMasterHD_SDK_Linux_v5.21/Drivers/DVI/x64/USBufMngr_Linux.c	2017-03-03 09:43:25.957804435 +0100
@@ -15,6 +15,7 @@
 #include "KernelObjects.h"
 #include "SkelIoctls.h"
 #include <linux/pagemap.h>
+#include <linux/version.h>
 
 /***** FUNCTIONS DEFINITION *******************************************************************************************/
 
@@ -48,7 +49,13 @@ BOOL32 USBufMngr_RetrievePages( PDEVICE_
       ppPage_X = (struct page **)pDescr_X->pOSData_v;
 
       down_read(&current->mm->mmap_sem);
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4,6,0)
       RetVal_i = get_user_pages(current, current->mm, ((unsigned long) pUSBufAddr), NbPages_UL, 1, 0, ppPage_X, NULL);
+#elif LINUX_VERSION_CODE < KERNEL_VERSION(4,9,0)
+      RetVal_i = get_user_pages(((unsigned long) pUSBufAddr), NbPages_UL, 1, 0, ppPage_X, NULL);
+#else
+      RetVal_i = get_user_pages(((unsigned long) pUSBufAddr), NbPages_UL, 0, ppPage_X, NULL);
+#endif
       up_read(&current->mm->mmap_sem);
 
       if (RetVal_i < 0) 
@@ -131,7 +138,11 @@ ULONG i;
          if (!PageReserved(ppPage_X[i])) 
             SetPageDirty(ppPage_X[i]);
          else RetailOutput("Page %d is reserverd\n",i);
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4,6,0)
          page_cache_release(ppPage_X[i]);
+#else
+         put_page(ppPage_X[i]);
+#endif
       }
 
       kfree(pDescr_X->pOSData_v);
diff -rupN a/VideoMasterHD_SDK_Linux_v5.21/Drivers/DVI/x86/USBufMngr_Linux.c b/VideoMasterHD_SDK_Linux_v5.21/Drivers/DVI/x86/USBufMngr_Linux.c
--- a/VideoMasterHD_SDK_Linux_v5.21/Drivers/DVI/x86/USBufMngr_Linux.c	2016-07-29 14:05:12.000000000 +0200
+++ b/VideoMasterHD_SDK_Linux_v5.21/Drivers/DVI/x86/USBufMngr_Linux.c	2017-03-03 09:43:25.957804435 +0100
@@ -15,6 +15,7 @@
 #include "KernelObjects.h"
 #include "SkelIoctls.h"
 #include <linux/pagemap.h>
+#include <linux/version.h>
 
 /***** FUNCTIONS DEFINITION *******************************************************************************************/
 
@@ -48,7 +49,13 @@ BOOL32 USBufMngr_RetrievePages( PDEVICE_
       ppPage_X = (struct page **)pDescr_X->pOSData_v;
 
       down_read(&current->mm->mmap_sem);
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4,6,0)
       RetVal_i = get_user_pages(current, current->mm, ((unsigned long) pUSBufAddr), NbPages_UL, 1, 0, ppPage_X, NULL);
+#elif LINUX_VERSION_CODE < KERNEL_VERSION(4,9,0)
+      RetVal_i = get_user_pages(((unsigned long) pUSBufAddr), NbPages_UL, 1, 0, ppPage_X, NULL);
+#else
+      RetVal_i = get_user_pages(((unsigned long) pUSBufAddr), NbPages_UL, 0, ppPage_X, NULL);
+#endif
       up_read(&current->mm->mmap_sem);
 
       if (RetVal_i < 0) 
@@ -131,7 +138,11 @@ ULONG i;
          if (!PageReserved(ppPage_X[i])) 
             SetPageDirty(ppPage_X[i]);
          else RetailOutput("Page %d is reserverd\n",i);
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4,6,0)
          page_cache_release(ppPage_X[i]);
+#else
+         put_page(ppPage_X[i]);
+#endif
       }
 
       kfree(pDescr_X->pOSData_v);
diff -rupN a/VideoMasterHD_SDK_Linux_v5.21/Drivers/HD/x64/USBufMngr_Linux.c b/VideoMasterHD_SDK_Linux_v5.21/Drivers/HD/x64/USBufMngr_Linux.c
--- a/VideoMasterHD_SDK_Linux_v5.21/Drivers/HD/x64/USBufMngr_Linux.c	2016-07-29 14:05:12.000000000 +0200
+++ b/VideoMasterHD_SDK_Linux_v5.21/Drivers/HD/x64/USBufMngr_Linux.c	2017-03-03 09:43:25.961804506 +0100
@@ -15,6 +15,7 @@
 #include "KernelObjects.h"
 #include "SkelIoctls.h"
 #include <linux/pagemap.h>
+#include <linux/version.h>
 
 /***** FUNCTIONS DEFINITION *******************************************************************************************/
 
@@ -48,7 +49,13 @@ BOOL32 USBufMngr_RetrievePages( PDEVICE_
       ppPage_X = (struct page **)pDescr_X->pOSData_v;
 
       down_read(&current->mm->mmap_sem);
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4,6,0)
       RetVal_i = get_user_pages(current, current->mm, ((unsigned long) pUSBufAddr), NbPages_UL, 1, 0, ppPage_X, NULL);
+#elif LINUX_VERSION_CODE < KERNEL_VERSION(4,9,0)
+      RetVal_i = get_user_pages(((unsigned long) pUSBufAddr), NbPages_UL, 1, 0, ppPage_X, NULL);
+#else
+      RetVal_i = get_user_pages(((unsigned long) pUSBufAddr), NbPages_UL, 0, ppPage_X, NULL);
+#endif
       up_read(&current->mm->mmap_sem);
 
       if (RetVal_i < 0) 
@@ -131,7 +138,11 @@ ULONG i;
          if (!PageReserved(ppPage_X[i])) 
             SetPageDirty(ppPage_X[i]);
          else RetailOutput("Page %d is reserverd\n",i);
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4,6,0)
          page_cache_release(ppPage_X[i]);
+#else
+         put_page(ppPage_X[i]);
+#endif
       }
 
       kfree(pDescr_X->pOSData_v);
diff -rupN a/VideoMasterHD_SDK_Linux_v5.21/Drivers/HD/x86/USBufMngr_Linux.c b/VideoMasterHD_SDK_Linux_v5.21/Drivers/HD/x86/USBufMngr_Linux.c
--- a/VideoMasterHD_SDK_Linux_v5.21/Drivers/HD/x86/USBufMngr_Linux.c	2016-07-29 14:05:12.000000000 +0200
+++ b/VideoMasterHD_SDK_Linux_v5.21/Drivers/HD/x86/USBufMngr_Linux.c	2017-03-03 09:43:25.961804506 +0100
@@ -15,6 +15,7 @@
 #include "KernelObjects.h"
 #include "SkelIoctls.h"
 #include <linux/pagemap.h>
+#include <linux/version.h>
 
 /***** FUNCTIONS DEFINITION *******************************************************************************************/
 
@@ -48,7 +49,13 @@ BOOL32 USBufMngr_RetrievePages( PDEVICE_
       ppPage_X = (struct page **)pDescr_X->pOSData_v;
 
       down_read(&current->mm->mmap_sem);
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4,6,0)
       RetVal_i = get_user_pages(current, current->mm, ((unsigned long) pUSBufAddr), NbPages_UL, 1, 0, ppPage_X, NULL);
+#elif LINUX_VERSION_CODE < KERNEL_VERSION(4,9,0)
+      RetVal_i = get_user_pages(((unsigned long) pUSBufAddr), NbPages_UL, 1, 0, ppPage_X, NULL);
+#else
+      RetVal_i = get_user_pages(((unsigned long) pUSBufAddr), NbPages_UL, 0, ppPage_X, NULL);
+#endif
       up_read(&current->mm->mmap_sem);
 
       if (RetVal_i < 0) 
@@ -131,7 +138,11 @@ ULONG i;
          if (!PageReserved(ppPage_X[i])) 
             SetPageDirty(ppPage_X[i]);
          else RetailOutput("Page %d is reserverd\n",i);
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4,6,0)
          page_cache_release(ppPage_X[i]);
+#else
+         put_page(ppPage_X[i]);
+#endif
       }
 
       kfree(pDescr_X->pOSData_v);
diff -rupN a/VideoMasterHD_SDK_Linux_v5.21/Drivers/X300/x64/USBufMngr_Linux.c b/VideoMasterHD_SDK_Linux_v5.21/Drivers/X300/x64/USBufMngr_Linux.c
--- a/VideoMasterHD_SDK_Linux_v5.21/Drivers/X300/x64/USBufMngr_Linux.c	2016-07-29 14:05:12.000000000 +0200
+++ b/VideoMasterHD_SDK_Linux_v5.21/Drivers/X300/x64/USBufMngr_Linux.c	2017-03-03 09:43:25.961804506 +0100
@@ -15,6 +15,7 @@
 #include "KernelObjects.h"
 #include "SkelIoctls.h"
 #include <linux/pagemap.h>
+#include <linux/version.h>
 
 /***** FUNCTIONS DEFINITION *******************************************************************************************/
 
@@ -48,7 +49,13 @@ BOOL32 USBufMngr_RetrievePages( PDEVICE_
       ppPage_X = (struct page **)pDescr_X->pOSData_v;
 
       down_read(&current->mm->mmap_sem);
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4,6,0)
       RetVal_i = get_user_pages(current, current->mm, ((unsigned long) pUSBufAddr), NbPages_UL, 1, 0, ppPage_X, NULL);
+#elif LINUX_VERSION_CODE < KERNEL_VERSION(4,9,0)
+      RetVal_i = get_user_pages(((unsigned long) pUSBufAddr), NbPages_UL, 1, 0, ppPage_X, NULL);
+#else
+      RetVal_i = get_user_pages(((unsigned long) pUSBufAddr), NbPages_UL, 0, ppPage_X, NULL);
+#endif
       up_read(&current->mm->mmap_sem);
 
       if (RetVal_i < 0) 
@@ -131,7 +138,11 @@ ULONG i;
          if (!PageReserved(ppPage_X[i])) 
             SetPageDirty(ppPage_X[i]);
          else RetailOutput("Page %d is reserverd\n",i);
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4,6,0)
          page_cache_release(ppPage_X[i]);
+#else
+         put_page(ppPage_X[i]);
+#endif
       }
 
       kfree(pDescr_X->pOSData_v);
diff -rupN a/VideoMasterHD_SDK_Linux_v5.21/Drivers/X300/x86/USBufMngr_Linux.c b/VideoMasterHD_SDK_Linux_v5.21/Drivers/X300/x86/USBufMngr_Linux.c
--- a/VideoMasterHD_SDK_Linux_v5.21/Drivers/X300/x86/USBufMngr_Linux.c	2016-07-29 14:05:12.000000000 +0200
+++ b/VideoMasterHD_SDK_Linux_v5.21/Drivers/X300/x86/USBufMngr_Linux.c	2017-03-03 09:43:25.965804578 +0100
@@ -15,6 +15,7 @@
 #include "KernelObjects.h"
 #include "SkelIoctls.h"
 #include <linux/pagemap.h>
+#include <linux/version.h>
 
 /***** FUNCTIONS DEFINITION *******************************************************************************************/
 
@@ -48,7 +49,13 @@ BOOL32 USBufMngr_RetrievePages( PDEVICE_
       ppPage_X = (struct page **)pDescr_X->pOSData_v;
 
       down_read(&current->mm->mmap_sem);
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4,6,0)
       RetVal_i = get_user_pages(current, current->mm, ((unsigned long) pUSBufAddr), NbPages_UL, 1, 0, ppPage_X, NULL);
+#elif LINUX_VERSION_CODE < KERNEL_VERSION(4,9,0)
+      RetVal_i = get_user_pages(((unsigned long) pUSBufAddr), NbPages_UL, 1, 0, ppPage_X, NULL);
+#else
+      RetVal_i = get_user_pages(((unsigned long) pUSBufAddr), NbPages_UL, 0, ppPage_X, NULL);
+#endif
       up_read(&current->mm->mmap_sem);
 
       if (RetVal_i < 0) 
@@ -131,7 +138,11 @@ ULONG i;
          if (!PageReserved(ppPage_X[i])) 
             SetPageDirty(ppPage_X[i]);
          else RetailOutput("Page %d is reserverd\n",i);
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4,6,0)
          page_cache_release(ppPage_X[i]);
+#else
+         put_page(ppPage_X[i]);
+#endif
       }
 
       kfree(pDescr_X->pOSData_v);
