| From a276f8bc5e4515f7ea51e2c56e0e634a723ca104 Mon Sep 17 00:00:00 2001 |
| From: vboxsync <vboxsync@cfe28804-0f27-0410-a406-dd0f0b0b656f> |
| Date: Tue, 8 Dec 2020 13:52:53 +0000 |
| Subject: [PATCH] linser/vboxsf: Adjustment for linux 5.10 - TASK_SIZE_MAX |
| replaces USER_DS.seg. bugref:9879 |
| |
| Upstream-Status: Backport |
| |
| git-svn-id: http://www.virtualbox.org/svn/vbox@87053 cfe28804-0f27-0410-a406-dd0f0b0b656f |
| |
| Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com> |
| --- |
| src/VBox/Additions/linux/sharedfolders/regops.c | 9 ++++++++- |
| 1 file changed, 8 insertions(+), 1 deletion(-) |
| |
| diff --git a/src/VBox/Additions/linux/sharedfolders/regops.c b/src/VBox/Additions/linux/sharedfolders/regops.c |
| index e1fad3d820..401fd69930 100644 |
| --- a/src/VBox/Additions/linux/sharedfolders/regops.c |
| +++ b/src/VBox/Additions/linux/sharedfolders/regops.c |
| @@ -147,7 +147,11 @@ static int vbsf_iov_iter_detect_type(struct iovec const *paIov, size_t cSegs) |
| while (cSegs-- > 0) { |
| if (paIov->iov_len > 0) { |
| if (access_ok(VERIFY_READ, paIov->iov_base, paIov->iov_len)) |
| +#if RTLNX_VER_MIN(5,10,0) |
| + return (uintptr_t)paIov->iov_base >= TASK_SIZE_MAX ? ITER_KVEC : 0; |
| +#else |
| return (uintptr_t)paIov->iov_base >= USER_DS.seg ? ITER_KVEC : 0; |
| +#endif |
| AssertMsgFailed(("%p LB %#zx\n", paIov->iov_base, paIov->iov_len)); |
| break; |
| } |
| @@ -1401,7 +1405,10 @@ static int vbsf_lock_user_pages_failed_check_kernel(uintptr_t uPtrFrom, size_t c |
| /* |
| * Check that this is valid user memory that is actually in the kernel range. |
| */ |
| -#if RTLNX_VER_MIN(5,0,0) || RTLNX_RHEL_MIN(8,1) |
| +#if RTLNX_VER_MIN(5,10,0) |
| + if ( access_ok((void *)uPtrFrom, cPages << PAGE_SHIFT) |
| + && uPtrFrom >= TASK_SIZE_MAX) |
| +#elif RTLNX_VER_MIN(5,0,0) || RTLNX_RHEL_MIN(8,1) |
| if ( access_ok((void *)uPtrFrom, cPages << PAGE_SHIFT) |
| && uPtrFrom >= USER_DS.seg) |
| #else |
| -- |
| 2.19.1 |
| |