initramfs: Escape colons in depfile
[cascardo/linux.git] / arch / powerpc / kernel / crash.c
index 2bb252c..47b63de 100644 (file)
@@ -48,8 +48,8 @@ int crashing_cpu = -1;
 static int time_to_dump;
 
 #define CRASH_HANDLER_MAX 3
-/* NULL terminated list of shutdown handles */
-static crash_shutdown_t crash_shutdown_handles[CRASH_HANDLER_MAX+1];
+/* List of shutdown handles */
+static crash_shutdown_t crash_shutdown_handles[CRASH_HANDLER_MAX];
 static DEFINE_SPINLOCK(crash_handlers_lock);
 
 static unsigned long crash_shutdown_buf[JMP_BUF_LEN];
@@ -65,7 +65,7 @@ static int handle_fault(struct pt_regs *regs)
 #ifdef CONFIG_SMP
 
 static atomic_t cpus_in_crash;
-void crash_ipi_callback(struct pt_regs *regs)
+static void crash_ipi_callback(struct pt_regs *regs)
 {
        static cpumask_t cpus_state_saved = CPU_MASK_NONE;
 
@@ -288,9 +288,14 @@ int crash_shutdown_unregister(crash_shutdown_t handler)
                rc = 1;
        } else {
                /* Shift handles down */
-               for (; crash_shutdown_handles[i]; i++)
+               for (; i < (CRASH_HANDLER_MAX - 1); i++)
                        crash_shutdown_handles[i] =
                                crash_shutdown_handles[i+1];
+               /*
+                * Reset last entry to NULL now that it has been shifted down,
+                * this will allow new handles to be added here.
+                */
+               crash_shutdown_handles[i] = NULL;
                rc = 0;
        }
 
@@ -346,7 +351,7 @@ void default_machine_crash_shutdown(struct pt_regs *regs)
        old_handler = __debugger_fault_handler;
        __debugger_fault_handler = handle_fault;
        crash_shutdown_cpu = smp_processor_id();
-       for (i = 0; crash_shutdown_handles[i]; i++) {
+       for (i = 0; i < CRASH_HANDLER_MAX && crash_shutdown_handles[i]; i++) {
                if (setjmp(crash_shutdown_buf) == 0) {
                        /*
                         * Insert syncs and delay to ensure