After converting powerpc checksum wrappers to scoped user access, following build failure happens: CC arch/powerpc/lib/checksum_wrappers.o In file included from arch/powerpc/lib/checksum_wrappers.c:12: arch/powerpc/lib/checksum_wrappers.c: In function 'csum_and_copy_from_user': ./include/linux/uaccess.h:691:1: error: initialization discards 'const' qualifier from pointer target type [-Werror=discarded-qualifiers] 691 | ({ \ | ^ ./include/linux/uaccess.h:755:37: note: in expansion of macro '__scoped_user_access_begin' 755 | for (void __user *_tmpptr = __scoped_user_access_begin(mode, uptr, size, elbl); \ | ^~~~~~~~~~~~~~~~~~~~~~~~~~ ./include/linux/uaccess.h:770:9: note: in expansion of macro '__scoped_user_access' 770 | __scoped_user_access(read, usrc, size, elbl) | ^~~~~~~~~~~~~~~~~~~~ arch/powerpc/lib/checksum_wrappers.c:17:9: note: in expansion of macro 'scoped_user_read_access_size' 17 | scoped_user_read_access_size(src, len, efault) | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ Cast __scoped_user_access_begin() to (void __user *) to fix it. Fixes: e497310b4ffb ("uaccess: Provide scoped user access regions") Signed-off-by: Christophe Leroy (CS GROUP) --- Thomas, I encountered this problem while preparing some patches to start using scope user access widely on powerpc in order to benefit more from masked user access. Can you make this patch go into 7.0 as a fix in order avoid dependency on this change when we start using scoped user access ? include/linux/uaccess.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/include/linux/uaccess.h b/include/linux/uaccess.h index 1f3804245c06..5d9f6d45d301 100644 --- a/include/linux/uaccess.h +++ b/include/linux/uaccess.h @@ -752,7 +752,8 @@ USER_ACCESS_GUARD(rw) */ #define __scoped_user_access(mode, uptr, size, elbl) \ for (bool done = false; !done; done = true) \ - for (void __user *_tmpptr = __scoped_user_access_begin(mode, uptr, size, elbl); \ + for (void __user *_tmpptr = (void __user *) \ + __scoped_user_access_begin(mode, uptr, size, elbl); \ !done; done = true) \ for (CLASS(user_##mode##_access, scope)(_tmpptr); !done; done = true) \ /* Force modified pointer usage within the scope */ \ -- 2.49.0