Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit de28f25e authored by Thomas Gleixner's avatar Thomas Gleixner
Browse files

clockevents: Set noop handler in clockevents_exchange_device()



If a device is shutdown, then there might be a pending interrupt,
which will be processed after we reenable interrupts, which causes the
original handler to be run. If the old handler is the (broadcast)
periodic handler the shutdown state might hang the kernel completely.

Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
Cc: stable@vger.kernel.org
parent c1be8430
Loading
Loading
Loading
Loading
+1 −0
Original line number Original line Diff line number Diff line
@@ -387,6 +387,7 @@ void clockevents_exchange_device(struct clock_event_device *old,
	 * released list and do a notify add later.
	 * released list and do a notify add later.
	 */
	 */
	if (old) {
	if (old) {
		old->event_handler = clockevents_handle_noop;
		clockevents_set_mode(old, CLOCK_EVT_MODE_UNUSED);
		clockevents_set_mode(old, CLOCK_EVT_MODE_UNUSED);
		list_del(&old->list);
		list_del(&old->list);
		list_add(&old->list, &clockevents_released);
		list_add(&old->list, &clockevents_released);