diff --git a/config/kernel-access-ok-type.m4 b/config/kernel-access-ok-type.m4
new file mode 100644
index 0000000000..3b2878a55c
--- /dev/null
+++ b/config/kernel-access-ok-type.m4
@@ -0,0 +1,21 @@
+dnl #
+dnl # Linux 5.0: access_ok() drops 'type' parameter:
+dnl #
+dnl # - access_ok(type, addr, size)
+dnl # + access_ok(addr, size)
+dnl #
+AC_DEFUN([ZFS_AC_KERNEL_ACCESS_OK_TYPE], [
+	AC_MSG_CHECKING([whether access_ok() has 'type' parameter])
+	ZFS_LINUX_TRY_COMPILE([
+		#include <linux/uaccess.h>
+	],[
+		const void __user __attribute__((unused)) *addr = (void *) 0xdeadbeef;
+		unsigned long __attribute__((unused)) size = 1;
+		int error __attribute__((unused)) = access_ok(0, addr, size);
+	],[
+		AC_MSG_RESULT(yes)
+		AC_DEFINE(HAVE_ACCESS_OK_TYPE, 1, [kernel has access_ok with 'type' parameter])
+	],[
+		AC_MSG_RESULT(no)
+	])
+])
diff --git a/config/kernel.m4 b/config/kernel.m4
index dfc509d6ae..d77f703652 100644
--- a/config/kernel.m4
+++ b/config/kernel.m4
@@ -5,6 +5,7 @@ AC_DEFUN([ZFS_AC_CONFIG_KERNEL], [
 	ZFS_AC_KERNEL
 	ZFS_AC_SPL
 	ZFS_AC_QAT
+	ZFS_AC_KERNEL_ACCESS_OK_TYPE
 	ZFS_AC_TEST_MODULE
 	ZFS_AC_KERNEL_MISC_MINOR
 	ZFS_AC_KERNEL_OBJTOOL
diff --git a/include/linux/kmap_compat.h b/include/linux/kmap_compat.h
index 59ae566ce9..b9c7f5bcc9 100644
--- a/include/linux/kmap_compat.h
+++ b/include/linux/kmap_compat.h
@@ -27,6 +27,7 @@
 #define	_ZFS_KMAP_H
 
 #include <linux/highmem.h>
+#include <linux/uaccess.h>
 
 #ifdef HAVE_1ARG_KMAP_ATOMIC
 /* 2.6.37 API change */
@@ -37,4 +38,11 @@
 #define	zfs_kunmap_atomic(addr, km_type)	kunmap_atomic(addr, km_type)
 #endif
 
+/* 5.0 API change - no more 'type' argument for access_ok() */
+#ifdef HAVE_ACCESS_OK_TYPE
+#define	zfs_access_ok(type, addr, size)	access_ok(type, addr, size)
+#else
+#define	zfs_access_ok(type, addr, size)	access_ok(addr, size)
+#endif
+
 #endif	/* _ZFS_KMAP_H */
diff --git a/module/zcommon/zfs_uio.c b/module/zcommon/zfs_uio.c
index 8e969bbcc0..5ec621cfd4 100644
--- a/module/zcommon/zfs_uio.c
+++ b/module/zcommon/zfs_uio.c
@@ -79,11 +79,10 @@ uiomove_iov(void *p, size_t n, enum uio_rw rw, struct uio *uio)
 					return (EFAULT);
 			} else {
 				if (uio->uio_fault_disable) {
-					if (!access_ok(VERIFY_READ,
+					if (!zfs_access_ok(VERIFY_READ,
 					    (iov->iov_base + skip), cnt)) {
 						return (EFAULT);
 					}
-
 					pagefault_disable();
 					if (__copy_from_user_inatomic(p,
 					    (iov->iov_base + skip), cnt)) {