Skip to content

Commit dbe67df

Browse files
jiangliutorvalds
authored andcommitted
mm: enhance free_reserved_area() to support poisoning memory with zero
Address more review comments from last round of code review. 1) Enhance free_reserved_area() to support poisoning freed memory with pattern '0'. This could be used to get rid of poison_init_mem() on ARM64. 2) A previous patch has disabled memory poison for initmem on s390 by mistake, so restore to the original behavior. 3) Remove redundant PAGE_ALIGN() when calling free_reserved_area(). Signed-off-by: Jiang Liu <[email protected]> Cc: Geert Uytterhoeven <[email protected]> Cc: "H. Peter Anvin" <[email protected]> Cc: "Michael S. Tsirkin" <[email protected]> Cc: <[email protected]> Cc: Arnd Bergmann <[email protected]> Cc: Catalin Marinas <[email protected]> Cc: Chris Metcalf <[email protected]> Cc: David Howells <[email protected]> Cc: Ingo Molnar <[email protected]> Cc: Jeremy Fitzhardinge <[email protected]> Cc: Jianguo Wu <[email protected]> Cc: Joonsoo Kim <[email protected]> Cc: Kamezawa Hiroyuki <[email protected]> Cc: Konrad Rzeszutek Wilk <[email protected]> Cc: Marek Szyprowski <[email protected]> Cc: Mel Gorman <[email protected]> Cc: Michel Lespinasse <[email protected]> Cc: Minchan Kim <[email protected]> Cc: Rik van Riel <[email protected]> Cc: Rusty Russell <[email protected]> Cc: Tang Chen <[email protected]> Cc: Tejun Heo <[email protected]> Cc: Thomas Gleixner <[email protected]> Cc: Wen Congyang <[email protected]> Cc: Will Deacon <[email protected]> Cc: Yasuaki Ishimatsu <[email protected]> Cc: Yinghai Lu <[email protected]> Cc: Russell King <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
1 parent 1119969 commit dbe67df

File tree

26 files changed

+49
-53
lines changed

26 files changed

+49
-53
lines changed

arch/alpha/kernel/sys_nautilus.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -239,7 +239,7 @@ nautilus_init_pci(void)
239239
memtop = pci_mem;
240240
if (memtop > alpha_mv.min_mem_address) {
241241
free_reserved_area(__va(alpha_mv.min_mem_address),
242-
__va(memtop), 0, NULL);
242+
__va(memtop), -1, NULL);
243243
printk("nautilus_init_pci: %ldk freed\n",
244244
(memtop - alpha_mv.min_mem_address) >> 10);
245245
}

arch/alpha/mm/init.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -319,13 +319,13 @@ mem_init(void)
319319
void
320320
free_initmem(void)
321321
{
322-
free_initmem_default(0);
322+
free_initmem_default(-1);
323323
}
324324

325325
#ifdef CONFIG_BLK_DEV_INITRD
326326
void
327327
free_initrd_mem(unsigned long start, unsigned long end)
328328
{
329-
free_reserved_area((void *)start, (void *)end, 0, "initrd");
329+
free_reserved_area((void *)start, (void *)end, -1, "initrd");
330330
}
331331
#endif

arch/arc/mm/init.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -146,13 +146,13 @@ void __init mem_init(void)
146146
*/
147147
void __init_refok free_initmem(void)
148148
{
149-
free_initmem_default(0);
149+
free_initmem_default(-1);
150150
}
151151

152152
#ifdef CONFIG_BLK_DEV_INITRD
153153
void __init free_initrd_mem(unsigned long start, unsigned long end)
154154
{
155-
free_reserved_area((void *)start, (void *)end, 0, "initrd");
155+
free_reserved_area((void *)start, (void *)end, -1, "initrd");
156156
}
157157
#endif
158158

arch/arm/mm/init.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -601,7 +601,7 @@ void __init mem_init(void)
601601

602602
#ifdef CONFIG_SA1111
603603
/* now that our DMA memory is actually so designated, we can free it */
604-
free_reserved_area(__va(PHYS_PFN_OFFSET), swapper_pg_dir, 0, NULL);
604+
free_reserved_area(__va(PHYS_PFN_OFFSET), swapper_pg_dir, -1, NULL);
605605
#endif
606606

607607
free_highpages();
@@ -729,12 +729,12 @@ void free_initmem(void)
729729
extern char __tcm_start, __tcm_end;
730730

731731
poison_init_mem(&__tcm_start, &__tcm_end - &__tcm_start);
732-
free_reserved_area(&__tcm_start, &__tcm_end, 0, "TCM link");
732+
free_reserved_area(&__tcm_start, &__tcm_end, -1, "TCM link");
733733
#endif
734734

735735
poison_init_mem(__init_begin, __init_end - __init_begin);
736736
if (!machine_is_integrator() && !machine_is_cintegrator())
737-
free_initmem_default(0);
737+
free_initmem_default(-1);
738738
}
739739

740740
#ifdef CONFIG_BLK_DEV_INITRD
@@ -745,7 +745,7 @@ void free_initrd_mem(unsigned long start, unsigned long end)
745745
{
746746
if (!keep_initrd) {
747747
poison_init_mem((void *)start, PAGE_ALIGN(end) - start);
748-
free_reserved_area((void *)start, (void *)end, 0, "initrd");
748+
free_reserved_area((void *)start, (void *)end, -1, "initrd");
749749
}
750750
}
751751

arch/arm64/mm/init.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -387,7 +387,7 @@ void __init mem_init(void)
387387
void free_initmem(void)
388388
{
389389
poison_init_mem(__init_begin, __init_end - __init_begin);
390-
free_initmem_default(0);
390+
free_initmem_default(-1);
391391
}
392392

393393
#ifdef CONFIG_BLK_DEV_INITRD
@@ -398,7 +398,7 @@ void free_initrd_mem(unsigned long start, unsigned long end)
398398
{
399399
if (!keep_initrd) {
400400
poison_init_mem((void *)start, PAGE_ALIGN(end) - start);
401-
free_reserved_area((void *)start, (void *)end, 0, "initrd");
401+
free_reserved_area((void *)start, (void *)end, -1, "initrd");
402402
}
403403
}
404404

arch/avr32/mm/init.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -148,12 +148,12 @@ void __init mem_init(void)
148148

149149
void free_initmem(void)
150150
{
151-
free_initmem_default(0);
151+
free_initmem_default(-1);
152152
}
153153

154154
#ifdef CONFIG_BLK_DEV_INITRD
155155
void free_initrd_mem(unsigned long start, unsigned long end)
156156
{
157-
free_reserved_area((void *)start, (void *)end, 0, "initrd");
157+
free_reserved_area((void *)start, (void *)end, -1, "initrd");
158158
}
159159
#endif

arch/blackfin/mm/init.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -133,15 +133,15 @@ void __init mem_init(void)
133133
void __init free_initrd_mem(unsigned long start, unsigned long end)
134134
{
135135
#ifndef CONFIG_MPU
136-
free_reserved_area((void *)start, (void *)end, 0, "initrd");
136+
free_reserved_area((void *)start, (void *)end, -1, "initrd");
137137
#endif
138138
}
139139
#endif
140140

141141
void __init_refok free_initmem(void)
142142
{
143143
#if defined CONFIG_RAMKERNEL && !defined CONFIG_MPU
144-
free_initmem_default(0);
144+
free_initmem_default(-1);
145145
if (memory_start == (unsigned long)(&__init_end))
146146
memory_start = (unsigned long)(&__init_begin);
147147
#endif

arch/c6x/mm/init.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,11 +78,11 @@ void __init mem_init(void)
7878
#ifdef CONFIG_BLK_DEV_INITRD
7979
void __init free_initrd_mem(unsigned long start, unsigned long end)
8080
{
81-
free_reserved_area((void *)start, (void *)end, 0, "initrd");
81+
free_reserved_area((void *)start, (void *)end, -1, "initrd");
8282
}
8383
#endif
8484

8585
void __init free_initmem(void)
8686
{
87-
free_initmem_default(0);
87+
free_initmem_default(-1);
8888
}

arch/cris/mm/init.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,5 +65,5 @@ mem_init(void)
6565
void
6666
free_initmem(void)
6767
{
68-
free_initmem_default(0);
68+
free_initmem_default(-1);
6969
}

arch/frv/mm/init.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,7 @@ void __init mem_init(void)
162162
void free_initmem(void)
163163
{
164164
#if defined(CONFIG_RAMKERNEL) && !defined(CONFIG_PROTECT_KERNEL)
165-
free_initmem_default(0);
165+
free_initmem_default(-1);
166166
#endif
167167
} /* end free_initmem() */
168168

@@ -173,6 +173,6 @@ void free_initmem(void)
173173
#ifdef CONFIG_BLK_DEV_INITRD
174174
void __init free_initrd_mem(unsigned long start, unsigned long end)
175175
{
176-
free_reserved_area((void *)start, (void *)end, 0, "initrd");
176+
free_reserved_area((void *)start, (void *)end, -1, "initrd");
177177
} /* end free_initrd_mem() */
178178
#endif

0 commit comments

Comments
 (0)