diff options
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.9.21/0031-x86-get_user-Use-pointer-masking-to-limit-speculatio.patch')
-rw-r--r-- | common/recipes-kernel/linux/linux-yocto-4.9.21/0031-x86-get_user-Use-pointer-masking-to-limit-speculatio.patch | 100 |
1 files changed, 0 insertions, 100 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.9.21/0031-x86-get_user-Use-pointer-masking-to-limit-speculatio.patch b/common/recipes-kernel/linux/linux-yocto-4.9.21/0031-x86-get_user-Use-pointer-masking-to-limit-speculatio.patch deleted file mode 100644 index c58bff80..00000000 --- a/common/recipes-kernel/linux/linux-yocto-4.9.21/0031-x86-get_user-Use-pointer-masking-to-limit-speculatio.patch +++ /dev/null @@ -1,100 +0,0 @@ -From aa9e88541e4443ffd498e0dd1912b2e658a659e6 Mon Sep 17 00:00:00 2001 -From: Dan Williams <dan.j.williams@intel.com> -Date: Mon, 29 Jan 2018 17:02:54 -0800 -Subject: [PATCH 31/42] x86/get_user: Use pointer masking to limit speculation - -(cherry picked from commit c7f631cb07e7da06ac1d231ca178452339e32a94) - -Quoting Linus: - - I do think that it would be a good idea to very expressly document - the fact that it's not that the user access itself is unsafe. I do - agree that things like "get_user()" want to be protected, but not - because of any direct bugs or problems with get_user() and friends, - but simply because get_user() is an excellent source of a pointer - that is obviously controlled from a potentially attacking user - space. So it's a prime candidate for then finding _subsequent_ - accesses that can then be used to perturb the cache. - -Unlike the __get_user() case get_user() includes the address limit check -near the pointer de-reference. With that locality the speculation can be -mitigated with pointer narrowing rather than a barrier, i.e. -array_index_nospec(). Where the narrowing is performed by: - - cmp %limit, %ptr - sbb %mask, %mask - and %mask, %ptr - -With respect to speculation the value of %ptr is either less than %limit -or NULL. - -Co-developed-by: Linus Torvalds <torvalds@linux-foundation.org> -Signed-off-by: Dan Williams <dan.j.williams@intel.com> -Signed-off-by: Thomas Gleixner <tglx@linutronix.de> -Cc: linux-arch@vger.kernel.org -Cc: Kees Cook <keescook@chromium.org> -Cc: kernel-hardening@lists.openwall.com -Cc: gregkh@linuxfoundation.org -Cc: Al Viro <viro@zeniv.linux.org.uk> -Cc: Andy Lutomirski <luto@kernel.org> -Cc: torvalds@linux-foundation.org -Cc: alan@linux.intel.com -Link: https://lkml.kernel.org/r/151727417469.33451.11804043010080838495.stgit@dwillia2-desk3.amr.corp.intel.com -Signed-off-by: David Woodhouse <dwmw@amazon.co.uk> -Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> ---- - arch/x86/lib/getuser.S | 10 ++++++++++ - 1 file changed, 10 insertions(+) - -diff --git a/arch/x86/lib/getuser.S b/arch/x86/lib/getuser.S -index 37b62d4..b12b214 100644 ---- a/arch/x86/lib/getuser.S -+++ b/arch/x86/lib/getuser.S -@@ -39,6 +39,8 @@ ENTRY(__get_user_1) - mov PER_CPU_VAR(current_task), %_ASM_DX - cmp TASK_addr_limit(%_ASM_DX),%_ASM_AX - jae bad_get_user -+ sbb %_ASM_DX, %_ASM_DX /* array_index_mask_nospec() */ -+ and %_ASM_DX, %_ASM_AX - ASM_STAC - 1: movzbl (%_ASM_AX),%edx - xor %eax,%eax -@@ -53,6 +55,8 @@ ENTRY(__get_user_2) - mov PER_CPU_VAR(current_task), %_ASM_DX - cmp TASK_addr_limit(%_ASM_DX),%_ASM_AX - jae bad_get_user -+ sbb %_ASM_DX, %_ASM_DX /* array_index_mask_nospec() */ -+ and %_ASM_DX, %_ASM_AX - ASM_STAC - 2: movzwl -1(%_ASM_AX),%edx - xor %eax,%eax -@@ -67,6 +71,8 @@ ENTRY(__get_user_4) - mov PER_CPU_VAR(current_task), %_ASM_DX - cmp TASK_addr_limit(%_ASM_DX),%_ASM_AX - jae bad_get_user -+ sbb %_ASM_DX, %_ASM_DX /* array_index_mask_nospec() */ -+ and %_ASM_DX, %_ASM_AX - ASM_STAC - 3: movl -3(%_ASM_AX),%edx - xor %eax,%eax -@@ -82,6 +88,8 @@ ENTRY(__get_user_8) - mov PER_CPU_VAR(current_task), %_ASM_DX - cmp TASK_addr_limit(%_ASM_DX),%_ASM_AX - jae bad_get_user -+ sbb %_ASM_DX, %_ASM_DX /* array_index_mask_nospec() */ -+ and %_ASM_DX, %_ASM_AX - ASM_STAC - 4: movq -7(%_ASM_AX),%rdx - xor %eax,%eax -@@ -93,6 +101,8 @@ ENTRY(__get_user_8) - mov PER_CPU_VAR(current_task), %_ASM_DX - cmp TASK_addr_limit(%_ASM_DX),%_ASM_AX - jae bad_get_user_8 -+ sbb %_ASM_DX, %_ASM_DX /* array_index_mask_nospec() */ -+ and %_ASM_DX, %_ASM_AX - ASM_STAC - 4: movl -7(%_ASM_AX),%edx - 5: movl -3(%_ASM_AX),%ecx --- -2.7.4 - |