tick/broadcast: Prevent NULL pointer dereference

Dan reported that the recent changes to the broadcast code introduced
a potential NULL dereference.

Add the proper check.

Fixes: e045431190 "tick/broadcast: Sanity check the shutdown of the local clock_event"
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
This commit is contained in:
Thomas Gleixner 2015-07-11 14:26:34 +02:00
parent 1f6823faa8
commit c4d029f2d4

View File

@ -409,14 +409,16 @@ void tick_broadcast_control(enum tick_broadcast_mode mode)
break; break;
} }
if (cpumask_empty(tick_broadcast_mask)) { if (bc) {
if (!bc_stopped) if (cpumask_empty(tick_broadcast_mask)) {
clockevents_shutdown(bc); if (!bc_stopped)
} else if (bc_stopped) { clockevents_shutdown(bc);
if (tick_broadcast_device.mode == TICKDEV_MODE_PERIODIC) } else if (bc_stopped) {
tick_broadcast_start_periodic(bc); if (tick_broadcast_device.mode == TICKDEV_MODE_PERIODIC)
else tick_broadcast_start_periodic(bc);
tick_broadcast_setup_oneshot(bc); else
tick_broadcast_setup_oneshot(bc);
}
} }
raw_spin_unlock(&tick_broadcast_lock); raw_spin_unlock(&tick_broadcast_lock);
} }