| Upstream-Status: Backport |
| Signed-off-by: Ross Burton <ross.burton@intel.com> |
| |
| From 2b29be8ac41414ed19cb4f5d5626d9bd0d7b11a8 Mon Sep 17 00:00:00 2001 |
| From: Cristian Stoica <cristian.stoica@nxp.com> |
| Date: Wed, 8 Feb 2017 12:11:04 +0200 |
| Subject: [PATCH] adjust to API changes in kernel >=4.10 |
| |
| There are many changes related to get_user_pages and the code is rewritten |
| for clarity. |
| |
| Signed-off-by: Cristian Stoica <cristian.stoica@nxp.com> |
| --- |
| zc.c | 28 +++++++++++++++++----------- |
| 1 file changed, 17 insertions(+), 11 deletions(-) |
| |
| diff --git a/zc.c b/zc.c |
| index e766ee3..2f4ea99 100644 |
| --- a/zc.c |
| +++ b/zc.c |
| @@ -59,19 +59,25 @@ int __get_userbuf(uint8_t __user *addr, uint32_t len, int write, |
| } |
| |
| down_read(&mm->mmap_sem); |
| -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 6, 0)) |
| - ret = get_user_pages_remote( |
| +#if (LINUX_VERSION_CODE < KERNEL_VERSION(4, 6, 0)) |
| + ret = get_user_pages(task, mm, |
| + (unsigned long)addr, pgcount, write, 0, pg, NULL); |
| #else |
| - ret = get_user_pages( |
| -#endif |
| - task, mm, |
| - (unsigned long)addr, pgcount, |
| -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 9, 0)) |
| - write ? FOLL_WRITE : 0, |
| -#else |
| - write, 0, |
| -#endif |
| +# if (LINUX_VERSION_CODE < KERNEL_VERSION(4, 9, 0)) |
| + ret = get_user_pages_remote(task, mm, |
| + (unsigned long)addr, pgcount, write, 0, pg, NULL); |
| +# else |
| +# if (LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)) |
| + ret = get_user_pages_remote(task, mm, |
| + (unsigned long)addr, pgcount, write ? FOLL_WRITE : 0, |
| pg, NULL); |
| +# else |
| + ret = get_user_pages_remote(task, mm, |
| + (unsigned long)addr, pgcount, write ? FOLL_WRITE : 0, |
| + pg, NULL, NULL); |
| +# endif |
| +# endif |
| +#endif |
| up_read(&mm->mmap_sem); |
| if (ret != pgcount) |
| return -EINVAL; |