linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] mm/sparse: Consistently do not zero memmap
@ 2019-10-30 13:11 Vincent Whitchurch
  2019-10-30 13:29 ` Michal Hocko
                   ` (3 more replies)
  0 siblings, 4 replies; 19+ messages in thread
From: Vincent Whitchurch @ 2019-10-30 13:11 UTC (permalink / raw)
  To: akpm
  Cc: osalvador, mhocko, pasha.tatashin, linux-mm, linux-kernel,
	Vincent Whitchurch

sparsemem without VMEMMAP has two allocation paths to allocate the
memory needed for its memmap (done in sparse_mem_map_populate()).

In one allocation path (sparse_buffer_alloc() succeeds), the memory is
not zeroed (since it was previously allocated with
memblock_alloc_try_nid_raw()).

In the other allocation path (sparse_buffer_alloc() fails and
sparse_mem_map_populate() falls back to memblock_alloc_try_nid()), the
memory is zeroed.

AFAICS this difference does not appear to be on purpose.  If the code is
supposed to work with non-initialized memory (__init_single_page() takes
care of zeroing the struct pages which are actually used), we should
consistently not zero the memory, to avoid masking bugs.

(I noticed this because on my ARM64 platform, with 1 GiB of memory the
 first [and only] section is allocated from the zeroing path while with
 2 GiB of memory the first 1 GiB section is allocated from the
 non-zeroing path.)

Signed-off-by: Vincent Whitchurch <vincent.whitchurch@axis.com>
---
 mm/sparse.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/mm/sparse.c b/mm/sparse.c
index f6891c1992b1..01e467adc219 100644
--- a/mm/sparse.c
+++ b/mm/sparse.c
@@ -458,7 +458,7 @@ struct page __init *__populate_section_memmap(unsigned long pfn,
 	if (map)
 		return map;
 
-	map = memblock_alloc_try_nid(size,
+	map = memblock_alloc_try_nid_raw(size,
 					  PAGE_SIZE, addr,
 					  MEMBLOCK_ALLOC_ACCESSIBLE, nid);
 	if (!map)
-- 
2.20.0


^ permalink raw reply related	[flat|nested] 19+ messages in thread

end of thread, other threads:[~2019-11-18 11:28 UTC | newest]

Thread overview: 19+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-10-30 13:11 [PATCH] mm/sparse: Consistently do not zero memmap Vincent Whitchurch
2019-10-30 13:29 ` Michal Hocko
2019-10-30 14:02   ` Vincent Whitchurch
2019-10-30 14:12     ` Michal Hocko
2019-10-30 15:20       ` Pavel Tatashin
2019-10-30 15:31         ` Michal Hocko
2019-10-30 16:53           ` Pavel Tatashin
2019-10-30 17:31             ` Michal Hocko
2019-10-30 17:53               ` Pavel Tatashin
2019-10-30 18:01                 ` Michal Hocko
2019-10-30 18:23                   ` Pavel Tatashin
2019-10-31  7:25               ` Michal Hocko
2019-11-04 15:51                 ` Vincent Whitchurch
2019-11-05  8:43                   ` Michal Hocko
2019-11-15 23:55                     ` Andrew Morton
2019-11-18 11:28                       ` Michal Hocko
2019-10-30 13:31 ` David Hildenbrand
2019-10-30 13:38 ` Oscar Salvador
2019-10-30 15:21 ` Pavel Tatashin

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).