From: Benjamin Herrenschmidt Date: Tue, 2 Aug 2016 05:53:01 +0000 (+1000) Subject: powerpc/32: Fix early access to cpu_spec relocation X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=2c0f99516f53911c3f2f81ab3815841e3408f11e;p=GitHub%2FLineageOS%2Fandroid_kernel_motorola_exynos9610.git powerpc/32: Fix early access to cpu_spec relocation Commit 9402c6846131 ("powerpc: Factor do_feature_fixup calls") introduced a subtle bug on 32-bit. When reading the cpu spec from the global, we not only need to do a pointer relocation on the global address but also on the pointer we read from it. This fixes crashes reported on MPC5200 based machines. Fixes: 9402c6846131 ("powerpc: Factor do_feature_fixup calls") Signed-off-by: Benjamin Herrenschmidt Signed-off-by: Michael Ellerman --- diff --git a/arch/powerpc/lib/feature-fixups.c b/arch/powerpc/lib/feature-fixups.c index 077fa0ce3382..74145f02ad41 100644 --- a/arch/powerpc/lib/feature-fixups.c +++ b/arch/powerpc/lib/feature-fixups.c @@ -161,7 +161,7 @@ static unsigned long __initdata saved_firmware_features; void __init apply_feature_fixups(void) { - struct cpu_spec *spec = *PTRRELOC(&cur_cpu_spec); + struct cpu_spec *spec = PTRRELOC(*PTRRELOC(&cur_cpu_spec)); *PTRRELOC(&saved_cpu_features) = spec->cpu_features; *PTRRELOC(&saved_mmu_features) = spec->mmu_features;