arch/riscv/include/asm/uaccess.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
From: Palmer Dabbelt <palmer@dabbelt.com>
I must have lost this rebasing things during the merge window, I know I
got it at some point but it's not here now. Without this I get warnings
along the lines of
include/linux/fs.h:3975:15: warning: label followed by a declaration is a C23 extension [-Wc23-extensions]
3975 | if (unlikely(get_user(c, path)))
| ^
arch/riscv/include/asm/uaccess.h:274:3: note: expanded from macro 'get_user'
274 | __get_user((x), __p) : \
| ^
arch/riscv/include/asm/uaccess.h:244:2: note: expanded from macro '__get_user'
244 | __get_user_error(__gu_val, __gu_ptr, __gu_err); \
| ^
arch/riscv/include/asm/uaccess.h:207:2: note: expanded from macro '__get_user_error'
207 | __ge LD [M] net/802/psnap.ko
t_user_nocheck(x, ptr, __gu_failed); \
| ^
arch/riscv/include/asm/uaccess.h:196:3: note: expanded from macro '__get_user_nocheck'
196 | __get_user_8((x), __gu_ptr, label); \
| ^
arch/riscv/include/asm/uaccess.h:130:2: note: expanded from macro '__get_user_8'
130 | u32 __user *__ptr = (u32 __user *)(ptr); \
| ^
Signed-off-by: Palmer Dabbelt <palmer@dabbelt.com>
---
arch/riscv/include/asm/uaccess.h | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/arch/riscv/include/asm/uaccess.h b/arch/riscv/include/asm/uaccess.h
index d472da4450e6..525e50db24f7 100644
--- a/arch/riscv/include/asm/uaccess.h
+++ b/arch/riscv/include/asm/uaccess.h
@@ -127,6 +127,7 @@ do { \
#ifdef CONFIG_CC_HAS_ASM_GOTO_OUTPUT
#define __get_user_8(x, ptr, label) \
+do { \
u32 __user *__ptr = (u32 __user *)(ptr); \
u32 __lo, __hi; \
asm_goto_output( \
@@ -141,7 +142,7 @@ do { \
: : label); \
(x) = (__typeof__(x))((__typeof__((x) - (x)))( \
(((u64)__hi << 32) | __lo))); \
-
+} while (0)
#else /* !CONFIG_CC_HAS_ASM_GOTO_OUTPUT */
#define __get_user_8(x, ptr, label) \
do { \
--
2.39.5 (Apple Git-154)
On 6/10/25 23:30, Palmer Dabbelt wrote: > From: Palmer Dabbelt <palmer@dabbelt.com> > > I must have lost this rebasing things during the merge window, I know I > got it at some point but it's not here now. Without this I get warnings > along the lines of > > include/linux/fs.h:3975:15: warning: label followed by a declaration is a C23 extension [-Wc23-extensions] > 3975 | if (unlikely(get_user(c, path))) > | ^ > arch/riscv/include/asm/uaccess.h:274:3: note: expanded from macro 'get_user' > 274 | __get_user((x), __p) : \ > | ^ > arch/riscv/include/asm/uaccess.h:244:2: note: expanded from macro '__get_user' > 244 | __get_user_error(__gu_val, __gu_ptr, __gu_err); \ > | ^ > arch/riscv/include/asm/uaccess.h:207:2: note: expanded from macro '__get_user_error' > 207 | __ge LD [M] net/802/psnap.ko > t_user_nocheck(x, ptr, __gu_failed); \ > | ^ > arch/riscv/include/asm/uaccess.h:196:3: note: expanded from macro '__get_user_nocheck' > 196 | __get_user_8((x), __gu_ptr, label); \ > | ^ > arch/riscv/include/asm/uaccess.h:130:2: note: expanded from macro '__get_user_8' > 130 | u32 __user *__ptr = (u32 __user *)(ptr); \ > | ^ > > Signed-off-by: Palmer Dabbelt <palmer@dabbelt.com> > --- > arch/riscv/include/asm/uaccess.h | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/arch/riscv/include/asm/uaccess.h b/arch/riscv/include/asm/uaccess.h > index d472da4450e6..525e50db24f7 100644 > --- a/arch/riscv/include/asm/uaccess.h > +++ b/arch/riscv/include/asm/uaccess.h > @@ -127,6 +127,7 @@ do { \ > > #ifdef CONFIG_CC_HAS_ASM_GOTO_OUTPUT > #define __get_user_8(x, ptr, label) \ > +do { \ > u32 __user *__ptr = (u32 __user *)(ptr); \ > u32 __lo, __hi; \ > asm_goto_output( \ > @@ -141,7 +142,7 @@ do { \ > : : label); \ > (x) = (__typeof__(x))((__typeof__((x) - (x)))( \ > (((u64)__hi << 32) | __lo))); \ > - > +} while (0) > #else /* !CONFIG_CC_HAS_ASM_GOTO_OUTPUT */ > #define __get_user_8(x, ptr, label) \ > do { \ I had come up with the same fix so: Reviewed-by: Alexandre Ghiti <alexghiti@rivosinc.com>
On Wed, 11 Jun 2025 00:31:18 PDT (-0700), Alexandre Ghiti wrote: > On 6/10/25 23:30, Palmer Dabbelt wrote: >> From: Palmer Dabbelt <palmer@dabbelt.com> >> >> I must have lost this rebasing things during the merge window, I know I >> got it at some point but it's not here now. Without this I get warnings >> along the lines of >> >> include/linux/fs.h:3975:15: warning: label followed by a declaration is a C23 extension [-Wc23-extensions] >> 3975 | if (unlikely(get_user(c, path))) >> | ^ >> arch/riscv/include/asm/uaccess.h:274:3: note: expanded from macro 'get_user' >> 274 | __get_user((x), __p) : \ >> | ^ >> arch/riscv/include/asm/uaccess.h:244:2: note: expanded from macro '__get_user' >> 244 | __get_user_error(__gu_val, __gu_ptr, __gu_err); \ >> | ^ >> arch/riscv/include/asm/uaccess.h:207:2: note: expanded from macro '__get_user_error' >> 207 | __ge LD [M] net/802/psnap.ko >> t_user_nocheck(x, ptr, __gu_failed); \ >> | ^ >> arch/riscv/include/asm/uaccess.h:196:3: note: expanded from macro '__get_user_nocheck' >> 196 | __get_user_8((x), __gu_ptr, label); \ >> | ^ >> arch/riscv/include/asm/uaccess.h:130:2: note: expanded from macro '__get_user_8' >> 130 | u32 __user *__ptr = (u32 __user *)(ptr); \ >> | ^ >> >> Signed-off-by: Palmer Dabbelt <palmer@dabbelt.com> >> --- >> arch/riscv/include/asm/uaccess.h | 3 ++- >> 1 file changed, 2 insertions(+), 1 deletion(-) >> >> diff --git a/arch/riscv/include/asm/uaccess.h b/arch/riscv/include/asm/uaccess.h >> index d472da4450e6..525e50db24f7 100644 >> --- a/arch/riscv/include/asm/uaccess.h >> +++ b/arch/riscv/include/asm/uaccess.h >> @@ -127,6 +127,7 @@ do { \ >> >> #ifdef CONFIG_CC_HAS_ASM_GOTO_OUTPUT >> #define __get_user_8(x, ptr, label) \ >> +do { \ >> u32 __user *__ptr = (u32 __user *)(ptr); \ >> u32 __lo, __hi; \ >> asm_goto_output( \ >> @@ -141,7 +142,7 @@ do { \ >> : : label); \ >> (x) = (__typeof__(x))((__typeof__((x) - (x)))( \ >> (((u64)__hi << 32) | __lo))); \ >> - >> +} while (0) >> #else /* !CONFIG_CC_HAS_ASM_GOTO_OUTPUT */ >> #define __get_user_8(x, ptr, label) \ >> do { \ > > > I had come up with the same fix so: > > Reviewed-by: Alexandre Ghiti <alexghiti@rivosinc.com> Thanks, and I guess it should also be Fixes: f6bff7827a48 ("riscv: uaccess: use 'asm_goto_output' for get_user()") I'm going to put it on fixes.
© 2016 - 2025 Red Hat, Inc.