| From 6fbcdd59094ade30db63f32316e9502425d7b256 Mon Sep 17 00:00:00 2001 |
| From: Suraj Jitindar Singh <sjitindarsingh@gmail.com> |
| Date: Wed, 6 Mar 2019 12:10:38 +1100 |
| Subject: powerpc: Add barrier_nospec to raw_copy_in_user() |
| |
| From: Suraj Jitindar Singh <sjitindarsingh@gmail.com> |
| |
| commit 6fbcdd59094ade30db63f32316e9502425d7b256 upstream. |
| |
| Commit ddf35cf3764b ("powerpc: Use barrier_nospec in copy_from_user()") |
| Added barrier_nospec before loading from user-controlled pointers. The |
| intention was to order the load from the potentially user-controlled |
| pointer vs a previous branch based on an access_ok() check or similar. |
| |
| In order to achieve the same result, add a barrier_nospec to the |
| raw_copy_in_user() function before loading from such a user-controlled |
| pointer. |
| |
| Fixes: ddf35cf3764b ("powerpc: Use barrier_nospec in copy_from_user()") |
| Signed-off-by: Suraj Jitindar Singh <sjitindarsingh@gmail.com> |
| Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| arch/powerpc/include/asm/uaccess.h | 1 + |
| 1 file changed, 1 insertion(+) |
| |
| --- a/arch/powerpc/include/asm/uaccess.h |
| +++ b/arch/powerpc/include/asm/uaccess.h |
| @@ -280,6 +280,7 @@ extern unsigned long __copy_tofrom_user( |
| static inline unsigned long |
| raw_copy_in_user(void __user *to, const void __user *from, unsigned long n) |
| { |
| + barrier_nospec(); |
| return __copy_tofrom_user(to, from, n); |
| } |
| #endif /* __powerpc64__ */ |