--- lin_tape-3.0.8/lin_tape_scsi_tape.c~ 2017-01-21 20:53:26.000000000 +0100 +++ lin_tape-3.0.8/lin_tape_scsi_tape.c 2017-01-21 20:58:23.919843647 +0100 @@ -11480,7 +11480,9 @@ memset(pages, '\0', drv->supported_sg_tablesize * sizeof(struct page*)); -#if LINUX_VERSION_CODE > KERNEL_VERSION(4,5,0) +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,9,0) + mapped_pages = get_user_pages_unlocked((ulong)user_location, number_pages, pages, rw ? FOLL_WRITE : 0); +#elif LINUX_VERSION_CODE > KERNEL_VERSION(4,5,0) mapped_pages = get_user_pages_unlocked((ulong)user_location, number_pages, rw, 0, pages); #else down_read(¤t->mm->mmap_sem); --- lin_tape-3.0.8/stmp.c~ 2017-01-21 20:59:35.000000000 +0100 +++ lin_tape-3.0.8/stmp.c 2017-01-21 21:01:53.144286074 +0100 @@ -5329,7 +5329,13 @@ if ((pages = kmalloc(max_pages * sizeof(*pages), GFP_KERNEL)) == NULL) return -ENOMEM; -#if LINUX_VERSION_CODE > KERNEL_VERSION(4,5,0) +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,9,0) + res = get_user_pages_unlocked( + uaddr, + nr_pages, + pages, + rw == READ ? FOLL_WRITE : 0); +#elif LINUX_VERSION_CODE > KERNEL_VERSION(4,5,0) res = get_user_pages_unlocked( uaddr, nr_pages,