MIPS: mips-cm: Check availability of config registers
authorJiaxun Yang <jiaxun.yang@flygoat.com>
Tue, 4 Apr 2023 09:33:42 +0000 (10:33 +0100)
committerThomas Bogendoerfer <tsbogend@alpha.franken.de>
Wed, 5 Apr 2023 07:45:08 +0000 (09:45 +0200)
Prevent reading unsupported config register during probing process.

Signed-off-by: Jiaxun Yang <jiaxun.yang@flygoat.com>
Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
arch/mips/kernel/mips-cm.c

index b4f7d95..3f00788 100644 (file)
@@ -181,11 +181,16 @@ static DEFINE_PER_CPU_ALIGNED(unsigned long, cm_core_lock_flags);
 
 phys_addr_t __mips_cm_phys_base(void)
 {
-       u32 config3 = read_c0_config3();
        unsigned long cmgcr;
 
        /* Check the CMGCRBase register is implemented */
-       if (!(config3 & MIPS_CONF3_CMGCR))
+       if (!(read_c0_config() & MIPS_CONF_M))
+               return 0;
+
+       if (!(read_c0_config2() & MIPS_CONF_M))
+               return 0;
+
+       if (!(read_c0_config3() & MIPS_CONF3_CMGCR))
                return 0;
 
        /* Read the address from CMGCRBase */