hrtimer: Handle failure of tick_init_highres() gracefully
authorGuenter Roeck <linux@roeck-us.net>
Sat, 22 Aug 2015 08:10:47 +0000 (01:10 -0700)
committerThomas Gleixner <tglx@linutronix.de>
Sat, 22 Aug 2015 08:57:50 +0000 (10:57 +0200)
Commit 75e3b37d0598 ("hrtimer: Drop return code of hrtimer_switch_to_hres()")
drops the return code of hrtimer_switch_to_hres(). While doing so, it also
drops the return statement itself on failure. This may cause a system hang.
Seen when running arm:multi_v7_defconfig in qemu with devicetree file
vexpress-v2p-ca9.

Fixes: 75e3b37d0598 ("hrtimer: Drop return code of hrtimer_switch_to_hres()")
Cc: Luiz Capitulino <lcapitulino@redhat.com>
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Link: http://lkml.kernel.org/r/1440231047-16256-1-git-send-email-linux@roeck-us.net
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
kernel/time/hrtimer.c

index 5c4fe50e47d301f4276277a586353f8ff16dda01..457a373e21812be2d06d52e500e7b490da8a4c67 100644 (file)
@@ -695,6 +695,7 @@ static void hrtimer_switch_to_hres(void)
        if (tick_init_highres()) {
                printk(KERN_WARNING "Could not switch to high resolution "
                                    "mode on CPU %d\n", base->cpu);
+               return;
        }
        base->hres_active = 1;
        hrtimer_resolution = HIGH_RES_NSEC;