| From 1437187fb1fefe6ad048d409a05fe6f89c2e9d1d Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Fri, 14 Sep 2018 13:36:48 +0930 |
| Subject: powerpc: Fix duplicate const clang warning in user access code |
| |
| From: Anton Blanchard <anton@samba.org> |
| |
| [ Upstream commit e00d93ac9a189673028ac125a74b9bc8ae73eebc ] |
| |
| This re-applies commit b91c1e3e7a6f ("powerpc: Fix duplicate const |
| clang warning in user access code") (Jun 2015) which was undone in |
| commits: |
| f2ca80905929 ("powerpc/sparse: Constify the address pointer in __get_user_nosleep()") (Feb 2017) |
| d466f6c5cac1 ("powerpc/sparse: Constify the address pointer in __get_user_nocheck()") (Feb 2017) |
| f84ed59a612d ("powerpc/sparse: Constify the address pointer in __get_user_check()") (Feb 2017) |
| |
| We see a large number of duplicate const errors in the user access |
| code when building with llvm/clang: |
| |
| include/linux/pagemap.h:576:8: warning: duplicate 'const' declaration specifier [-Wduplicate-decl-specifier] |
| ret = __get_user(c, uaddr); |
| |
| The problem is we are doing const __typeof__(*(ptr)), which will hit |
| the warning if ptr is marked const. |
| |
| Removing const does not seem to have any effect on GCC code |
| generation. |
| |
| Signed-off-by: Anton Blanchard <anton@samba.org> |
| Signed-off-by: Joel Stanley <joel@jms.id.au> |
| Reviewed-by: Nick Desaulniers <ndesaulniers@google.com> |
| Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| arch/powerpc/include/asm/uaccess.h | 6 +++--- |
| 1 file changed, 3 insertions(+), 3 deletions(-) |
| |
| diff --git a/arch/powerpc/include/asm/uaccess.h b/arch/powerpc/include/asm/uaccess.h |
| index 1ca9e37f7cc99..38a25ff8afb76 100644 |
| --- a/arch/powerpc/include/asm/uaccess.h |
| +++ b/arch/powerpc/include/asm/uaccess.h |
| @@ -260,7 +260,7 @@ do { \ |
| ({ \ |
| long __gu_err; \ |
| __long_type(*(ptr)) __gu_val; \ |
| - const __typeof__(*(ptr)) __user *__gu_addr = (ptr); \ |
| + __typeof__(*(ptr)) __user *__gu_addr = (ptr); \ |
| __chk_user_ptr(ptr); \ |
| if (!is_kernel_addr((unsigned long)__gu_addr)) \ |
| might_fault(); \ |
| @@ -274,7 +274,7 @@ do { \ |
| ({ \ |
| long __gu_err = -EFAULT; \ |
| __long_type(*(ptr)) __gu_val = 0; \ |
| - const __typeof__(*(ptr)) __user *__gu_addr = (ptr); \ |
| + __typeof__(*(ptr)) __user *__gu_addr = (ptr); \ |
| might_fault(); \ |
| if (access_ok(VERIFY_READ, __gu_addr, (size))) { \ |
| barrier_nospec(); \ |
| @@ -288,7 +288,7 @@ do { \ |
| ({ \ |
| long __gu_err; \ |
| __long_type(*(ptr)) __gu_val; \ |
| - const __typeof__(*(ptr)) __user *__gu_addr = (ptr); \ |
| + __typeof__(*(ptr)) __user *__gu_addr = (ptr); \ |
| __chk_user_ptr(ptr); \ |
| barrier_nospec(); \ |
| __get_user_size(__gu_val, __gu_addr, (size), __gu_err); \ |
| -- |
| 2.20.1 |
| |