ia64: fix build error due to switch case label appearing next to declaration
authorJames Morse <james.morse@arm.com>
Tue, 17 Jan 2023 15:16:32 +0000 (15:16 +0000)
committerAndrew Morton <akpm@linux-foundation.org>
Wed, 1 Feb 2023 00:44:08 +0000 (16:44 -0800)
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

index f6a502e..6e948d0 100644 (file)
@@ -170,6 +170,9 @@ ia64_mremap (unsigned long addr, unsigned long old_len, unsigned long new_len, u
 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_clock, struct __kernel_timespec __user *
        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);
        }