]) # LIBCFS_STACKTRACE_OPS
#
+# Kernel version 4.9 commit 768ae309a96103ed02eb1e111e838c87854d8b51
+# mm: replace get_user_pages() write/force parameters with gup_flags
+#
+AC_DEFUN([LIBCFS_GET_USER_PAGES_GUP_FLAGS], [
+LB_CHECK_COMPILE([if 'get_user_pages()' takes gup_flags in arguments],
+get_user_pages_gup_flags, [
+ #include <linux/mm.h>
+],[
+ int rc;
+ rc = get_user_pages(0, 0, FOLL_WRITE, NULL, NULL);
+],[
+ AC_DEFINE(HAVE_GET_USER_PAGES_GUP_FLAGS, 1,
+ [get_user_pages takes gup_flags in arguments])
+])
+]) # LIBCFS_GET_USER_PAGES_GUP_FLAGS
+
+#
# LIBCFS_PROG_LINUX
#
# LibCFS linux kernel checks
LIBCFS_GET_USER_PAGES_6ARG
# 4.8
LIBCFS_STACKTRACE_OPS
+# 4.9
+LIBCFS_GET_USER_PAGES_GUP_FLAGS
]) # LIBCFS_PROG_LINUX
#
int bytes, rc, offset;
void *maddr;
-#ifdef HAVE_GET_USER_PAGES_6ARG
+#if defined(HAVE_GET_USER_PAGES_GUP_FLAGS)
+ rc = get_user_pages(addr, 1, write ? FOLL_WRITE : 0, &page, &vma);
+#elif defined(HAVE_GET_USER_PAGES_6ARG)
rc = get_user_pages(addr, 1, write, 1, &page, &vma);
#else
rc = get_user_pages(tsk, mm, addr, 1, write, 1, &page, &vma);