Author: bonefish Date: 2011-06-05 01:19:31 +0200 (Sun, 05 Jun 2011) New Revision: 41916 Changeset: https://dev.haiku-os.org/changeset/41916 Modified: haiku/branches/developer/bonefish/signals/src/system/kernel/timer.cpp Log: cancel_timer(): Fixed incorrect condition: Don't wait for the handler, if it is currently executed on this CPU (IOW, when cancel_timer() has been called from it). Modified: haiku/branches/developer/bonefish/signals/src/system/kernel/timer.cpp =================================================================== --- haiku/branches/developer/bonefish/signals/src/system/kernel/timer.cpp 2011-06-04 21:53:17 UTC (rev 41915) +++ haiku/branches/developer/bonefish/signals/src/system/kernel/timer.cpp 2011-06-04 23:19:31 UTC (rev 41916) @@ -286,7 +286,7 @@ // for the hook to complete. When called from the timer hook we don't // wait either, of course. if ((event->flags & B_TIMER_ACQUIRE_SCHEDULER_LOCK) == 0 - || cpu == smp_get_current_cpu()) { + && cpu != smp_get_current_cpu()) { spinLocker.Unlock(); while (cpuData.current_event_in_progress == 1) {