| From foo@baz Fri Sep 21 10:21:24 CEST 2018 |
| From: Krzysztof Kozlowski <krzk@kernel.org> |
| Date: Tue, 24 Jul 2018 18:48:14 +0200 |
| Subject: ARM: exynos: Clear global variable on init error path |
| |
| From: Krzysztof Kozlowski <krzk@kernel.org> |
| |
| [ Upstream commit cd4806911cee3901bc2b5eb95603cf1958720b57 ] |
| |
| For most of Exynos SoCs, Power Management Unit (PMU) address space is |
| mapped into global variable 'pmu_base_addr' very early when initializing |
| PMU interrupt controller. A lot of other machine code depends on it so |
| when doing iounmap() on this address, clear the global as well to avoid |
| usage of invalid value (pointing to unmapped memory region). |
| |
| Properly mapped PMU address space is a requirement for all other machine |
| code so this fix is purely theoretical. Boot will fail immediately in |
| many other places after following this error path. |
| |
| Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org> |
| Signed-off-by: Sasha Levin <alexander.levin@microsoft.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| arch/arm/mach-exynos/suspend.c | 1 + |
| 1 file changed, 1 insertion(+) |
| |
| --- a/arch/arm/mach-exynos/suspend.c |
| +++ b/arch/arm/mach-exynos/suspend.c |
| @@ -203,6 +203,7 @@ static int __init exynos_pmu_irq_init(st |
| NULL); |
| if (!domain) { |
| iounmap(pmu_base_addr); |
| + pmu_base_addr = NULL; |
| return -ENOMEM; |
| } |
| |