diff options
author | Michal Hocko <mhocko@suse.com> | 2017-09-08 19:13:15 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2017-09-08 21:26:47 -0400 |
commit | b4ccec41af82b5a5518c6534444412961894f07c (patch) | |
tree | 85a827e39e522176bcdee2ae96b0349d2b49b404 | |
parent | de0c799bba2610a8e1e9a50d76a28614520a4cd4 (diff) |
mm/sparse.c: fix typo in online_mem_sections
online_mem_sections() accidentally marks online only the first section
in the given range. This is a typo which hasn't been noticed because I
haven't tested large 2GB blocks previously. All users of
pfn_to_online_page would get confused on the the rest of the pfn range
in the block.
All we need to fix this is to use iterator (pfn) rather than start_pfn.
Link: http://lkml.kernel.org/r/20170904112210.3401-1-mhocko@kernel.org
Fixes: 2d070eab2e82 ("mm: consider zone which is not fully populated to have holes")
Signed-off-by: Michal Hocko <mhocko@suse.com>
Acked-by: Vlastimil Babka <vbabka@suse.cz>
Cc: Anshuman Khandual <khandual@linux.vnet.ibm.com>
Cc: <stable@vger.kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r-- | mm/sparse.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/mm/sparse.c b/mm/sparse.c index a9783acf2bb9..83b3bf6461af 100644 --- a/mm/sparse.c +++ b/mm/sparse.c | |||
@@ -626,7 +626,7 @@ void online_mem_sections(unsigned long start_pfn, unsigned long end_pfn) | |||
626 | unsigned long pfn; | 626 | unsigned long pfn; |
627 | 627 | ||
628 | for (pfn = start_pfn; pfn < end_pfn; pfn += PAGES_PER_SECTION) { | 628 | for (pfn = start_pfn; pfn < end_pfn; pfn += PAGES_PER_SECTION) { |
629 | unsigned long section_nr = pfn_to_section_nr(start_pfn); | 629 | unsigned long section_nr = pfn_to_section_nr(pfn); |
630 | struct mem_section *ms; | 630 | struct mem_section *ms; |
631 | 631 | ||
632 | /* onlining code should never touch invalid ranges */ | 632 | /* onlining code should never touch invalid ranges */ |