diff --git a/src/system/kernel/int.cpp b/src/system/kernel/int.cpp index b34ba01c7f..e9e5a0c5fb 100644 --- a/src/system/kernel/int.cpp +++ b/src/system/kernel/int.cpp @@ -708,7 +708,15 @@ free_io_interrupt_vectors(long count, long startVector) startVector + i); } - sVectors[startVector + i].assigned_cpu = NULL; + io_vector& vector = sVectors[startVector + i]; + InterruptsSpinLocker vectorLocker(vector.vector_lock); + if (vector.assigned_cpu != NULL && vector.assigned_cpu->cpu != -1) { + panic("freeing io interrupt vector %ld that is still asigned to a " + "cpu", startVector + i); + continue; + } + + vector.assigned_cpu = NULL; sAllocatedIOInterruptVectors[startVector + i] = false; } }