--- lin_tape-3.0.18/lin_tape_scsi_tape.c~ 2017-02-23 19:14:41.000000000 +0100 +++ lin_tape-3.0.18/lin_tape_scsi_tape.c 2017-05-09 21:28:19.916320963 +0200 @@ -11838,7 +11838,10 @@ down_read(¤t->mm->mmap_sem); -#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,6,0) +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,9,0) + mapped_pages = get_user_pages((ulong)user_location, number_pages, + rw ? FOLL_WRITE : 0, pages, NULL); +#elif LINUX_VERSION_CODE >= KERNEL_VERSION(4,6,0) mapped_pages = get_user_pages((ulong)user_location, number_pages, rw, 0, pages, NULL); #else --- lin_tape-3.0.18/stmp.c~ 2017-05-09 21:25:12.000000000 +0200 +++ lin_tape-3.0.18/stmp.c 2017-05-09 21:29:19.121101188 +0200 @@ -5205,7 +5205,14 @@ if ((pages = kmalloc(max_pages * sizeof(*pages), GFP_KERNEL)) == NULL) return -ENOMEM; -#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,4,21) +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,9,0) + res = get_user_pages_unlocked( + uaddr, + nr_pages, + rw == READ ? FOLL_WRITE : 0, + pages, + NULL); +#elif LINUX_VERSION_CODE >= KERNEL_VERSION(4,4,21) /* Try to fault in all of the necessary pages */ /* rw==READ means read from drive, write into memory area */ res = get_user_pages_unlocked(