From 0e5ff61a7976738ed21423a1dc555d849c2cf03e Mon Sep 17 00:00:00 2001 From: Jose Diaz de Grenu Date: Mon, 9 Oct 2017 17:48:17 +0200 Subject: [PATCH] cryptodev: fix compilation error for kernel v4.9 The patch is needed to match the API kernel changes. This fixes: zc.c:68:44: error: passing argument 7 of 'get_user_pages_remote' from incompatible pointer type [-Werror=incompatible-pointer-types] (unsigned long)addr, pgcount, write, 0, pg, NULL); ^~ In file included from zc.c:28:0: kernel-source/include/linux/mm.h:1276:6: note: expected 'struct vm_area_struct **' but argument is of type 'struct page **' long get_user_pages_remote(struct task_struct *tsk, struct mm_struct *mm, ^~~~~~~~~~~~~~~~~~~~~ zc.c:63:8: error: too many arguments to function 'get_user_pages_remote' ret = get_user_pages_remote( ^~~~~~~~~~~~~~~~~~~~~ In file included from zc.c:28:0: kernel-source/include/linux/mm.h:1276:6: note: declared here long get_user_pages_remote(struct task_struct *tsk, struct mm_struct *mm, ^~~~~~~~~~~~~~~~~~~~~ cc1: some warnings being treated as errors https://jira.digi.com/browse/DEL-5081 Signed-off-by: Jose Diaz de Grenu --- ...-another-change-in-the-user-page-API.patch | 32 +++++++++++++++++++ .../cryptodev/cryptodev-module_%.bbappend | 6 +++- 2 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 meta-digi-arm/recipes-kernel/cryptodev/cryptodev-module/0002-Adjust-to-another-change-in-the-user-page-API.patch diff --git a/meta-digi-arm/recipes-kernel/cryptodev/cryptodev-module/0002-Adjust-to-another-change-in-the-user-page-API.patch b/meta-digi-arm/recipes-kernel/cryptodev/cryptodev-module/0002-Adjust-to-another-change-in-the-user-page-API.patch new file mode 100644 index 000000000..73313f380 --- /dev/null +++ b/meta-digi-arm/recipes-kernel/cryptodev/cryptodev-module/0002-Adjust-to-another-change-in-the-user-page-API.patch @@ -0,0 +1,32 @@ +From: Michael Weiser +Date: Fri, 11 Nov 2016 18:09:32 +0100 +Subject: [PATCH] Adjust to another change in the user page API + +4.9.0 will replace the write and force flags of get_user_pages_remote() +with a gup_flags parameter[1]. Distinguish the two APIs based on kernel +version we're compiling for. + +[1] https://github.com/torvalds/linux/commit/9beae1ea89305a9667ceaab6d0bf46a045ad71e7 +--- + zc.c | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) + +diff --git a/zc.c b/zc.c +index a97b49f75327..e766ee3eabc7 100644 +--- a/zc.c ++++ b/zc.c +@@ -65,7 +65,13 @@ int __get_userbuf(uint8_t __user *addr, uint32_t len, int write, + ret = get_user_pages( + #endif + task, mm, +- (unsigned long)addr, pgcount, write, 0, pg, NULL); ++ (unsigned long)addr, pgcount, ++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 9, 0)) ++ write ? FOLL_WRITE : 0, ++#else ++ write, 0, ++#endif ++ pg, NULL); + up_read(&mm->mmap_sem); + if (ret != pgcount) + return -EINVAL; diff --git a/meta-digi-arm/recipes-kernel/cryptodev/cryptodev-module_%.bbappend b/meta-digi-arm/recipes-kernel/cryptodev/cryptodev-module_%.bbappend index 087f298e1..ce1d97772 100644 --- a/meta-digi-arm/recipes-kernel/cryptodev/cryptodev-module_%.bbappend +++ b/meta-digi-arm/recipes-kernel/cryptodev/cryptodev-module_%.bbappend @@ -1,3 +1,7 @@ -# Copyright (C) 2016 Digi International. +# Copyright (C) 2016-2017 Digi International Inc. + +FILESEXTRAPATHS_prepend := "${THISDIR}/${BPN}:" + +SRC_URI_append = " file://0002-Adjust-to-another-change-in-the-user-page-API.patch" KERNEL_MODULE_AUTOLOAD = "cryptodev"