Commit e00d93ac authored by Anton Blanchard's avatar Anton Blanchard Committed by Michael Ellerman
Browse files

powerpc: Fix duplicate const clang warning in user access code



This re-applies commit b91c1e3e ("powerpc: Fix duplicate const
clang warning in user access code") (Jun 2015) which was undone in
commits:
  f2ca8090 ("powerpc/sparse: Constify the address pointer in __get_user_nosleep()") (Feb 2017)
  d466f6c5 ("powerpc/sparse: Constify the address pointer in __get_user_nocheck()") (Feb 2017)
  f84ed59a ("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: default avatarAnton Blanchard <anton@samba.org>
Signed-off-by: default avatarJoel Stanley <joel@jms.id.au>
Reviewed-by: default avatarNick Desaulniers <ndesaulniers@google.com>
Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
parent ee9d21b3
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -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);	\