| From foo@baz Wed Dec 6 18:04:41 CET 2017 |
| From: Greg Ungerer <gerg@linux-m68k.org> |
| Date: Tue, 5 Sep 2017 22:57:06 +1000 |
| Subject: m68k: fix ColdFire node shift size calculation |
| |
| From: Greg Ungerer <gerg@linux-m68k.org> |
| |
| |
| [ Upstream commit f55ab8f27548ff3431a6567d400c6757c49fd520 ] |
| |
| The m68k pg_data_table is a fix size array defined in arch/m68k/mm/init.c. |
| Index numbers within it are defined based on memory size. But for Coldfire |
| these don't take into account a non-zero physical RAM base address, and this |
| causes us to access past the end of this array at system start time. |
| |
| Change the node shift calculation so that we keep the index inside its range. |
| |
| Reported-by: Angelo Dureghello <angelo@sysam.it> |
| Tested-by: Angelo Dureghello <angelo@sysam.it> |
| Signed-off-by: Greg Ungerer <gerg@linux-m68k.org> |
| Signed-off-by: Sasha Levin <alexander.levin@verizon.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| arch/m68k/mm/mcfmmu.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| --- a/arch/m68k/mm/mcfmmu.c |
| +++ b/arch/m68k/mm/mcfmmu.c |
| @@ -170,7 +170,7 @@ void __init cf_bootmem_alloc(void) |
| max_pfn = max_low_pfn = PFN_DOWN(_ramend); |
| high_memory = (void *)_ramend; |
| |
| - m68k_virt_to_node_shift = fls(_ramend - _rambase - 1) - 6; |
| + m68k_virt_to_node_shift = fls(_ramend - 1) - 6; |
| module_fixup(NULL, __start_fixup, __stop_fixup); |
| |
| /* setup bootmem data */ |