| From: James Morse <james.morse@arm.com> |
| Subject: ia64: fix build error due to switch case label appearing next to declaration |
| Date: Tue, 17 Jan 2023 15:16:32 +0000 |
| |
| Since commit aa06a9bd8533 ("ia64: fix clock_getres(CLOCK_MONOTONIC) to |
| report ITC frequency"), gcc 10.1.0 fails to build ia64 with the gnomic: |
| | ../arch/ia64/kernel/sys_ia64.c: In function 'ia64_clock_getres': |
| | ../arch/ia64/kernel/sys_ia64.c:189:3: error: a label can only be part of a statement and a declaration is not a statement |
| | 189 | s64 tick_ns = DIV_ROUND_UP(NSEC_PER_SEC, local_cpu_data->itc_freq); |
| |
| This line appears immediately after a case label in a switch. |
| |
| Move the declarations out of the case, to the top of the function. |
| |
| Link: https://lkml.kernel.org/r/20230117151632.393836-1-james.morse@arm.com |
| Fixes: aa06a9bd8533 ("ia64: fix clock_getres(CLOCK_MONOTONIC) to report ITC frequency") |
| Signed-off-by: James Morse <james.morse@arm.com> |
| Reviewed-by: Sergei Trofimovich <slyich@gmail.com> |
| Cc: Émeric Maschino <emeric.maschino@gmail.com> |
| Cc: matoro <matoro_mailinglist_kernel@matoro.tk> |
| Cc: John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de> |
| Cc: <stable@vger.kernel.org> |
| Signed-off-by: Andrew Morton <akpm@linux-foundation.org> |
| --- |
| |
| arch/ia64/kernel/sys_ia64.c | 7 +++++-- |
| 1 file changed, 5 insertions(+), 2 deletions(-) |
| |
| --- a/arch/ia64/kernel/sys_ia64.c~ia64-fix-build-error-due-to-switch-case-label-appearing-next-to-declaration |
| +++ a/arch/ia64/kernel/sys_ia64.c |
| @@ -170,6 +170,9 @@ ia64_mremap (unsigned long addr, unsigne |
| asmlinkage long |
| ia64_clock_getres(const clockid_t which_clock, struct __kernel_timespec __user *tp) |
| { |
| + struct timespec64 rtn_tp; |
| + s64 tick_ns; |
| + |
| /* |
| * ia64's clock_gettime() syscall is implemented as a vdso call |
| * fsys_clock_gettime(). Currently it handles only |
| @@ -185,8 +188,8 @@ ia64_clock_getres(const clockid_t which_ |
| switch (which_clock) { |
| case CLOCK_REALTIME: |
| case CLOCK_MONOTONIC: |
| - s64 tick_ns = DIV_ROUND_UP(NSEC_PER_SEC, local_cpu_data->itc_freq); |
| - struct timespec64 rtn_tp = ns_to_timespec64(tick_ns); |
| + tick_ns = DIV_ROUND_UP(NSEC_PER_SEC, local_cpu_data->itc_freq); |
| + rtn_tp = ns_to_timespec64(tick_ns); |
| return put_timespec64(&rtn_tp, tp); |
| } |
| |
| _ |