powerpc: Ensure that ppc_md is empty before probing for machine type
authorBenjamin Herrenschmidt <benh@kernel.crashing.org>
Tue, 5 Jul 2016 05:03:59 +0000 (15:03 +1000)
committerMichael Ellerman <mpe@ellerman.id.au>
Thu, 21 Jul 2016 08:59:21 +0000 (18:59 +1000)
Anything in there will be overwritten, so it helps catching nasty
bugs if we check that it's indeed full of NULL's before we do so.

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
arch/powerpc/kernel/setup-common.c

index 2a3564c..b8ee1c8 100644 (file)
@@ -575,6 +575,7 @@ void probe_machine(void)
 {
        extern struct machdep_calls __machine_desc_start;
        extern struct machdep_calls __machine_desc_end;
+       unsigned int i;
 
        /*
         * Iterate all ppc_md structures until we find the proper
@@ -582,6 +583,17 @@ void probe_machine(void)
         */
        DBG("Probing machine type ...\n");
 
+       /*
+        * Check ppc_md is empty, if not we have a bug, ie, we setup an
+        * entry before probe_machine() which will be overwritten
+        */
+       for (i = 0; i < (sizeof(ppc_md) / sizeof(void *)); i++) {
+               if (((void **)&ppc_md)[i]) {
+                       printk(KERN_ERR "Entry %d in ppc_md non empty before"
+                              " machine probe !\n", i);
+               }
+       }
+
        for (machine_id = &__machine_desc_start;
             machine_id < &__machine_desc_end;
             machine_id++) {