Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

[PATCH] free initrd mem adjustment

Besides freeing initrd memory, also clear out the now dangling pointers to
it, to make sure accidental late use attempts can be detected.

Signed-off-by: Jan Beulich <jbeulich@novell.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>

authored by

Jan Beulich and committed by
Linus Torvalds
0f3d2bd5 a1a5b3d9

+10 -2
+10 -2
init/initramfs.c
··· 466 466 extern char __initramfs_start[], __initramfs_end[]; 467 467 #ifdef CONFIG_BLK_DEV_INITRD 468 468 #include <linux/initrd.h> 469 + 470 + static void __init free_initrd(void) 471 + { 472 + free_initrd_mem(initrd_start, initrd_end); 473 + initrd_start = 0; 474 + initrd_end = 0; 475 + } 476 + 469 477 #endif 470 478 471 479 void __init populate_rootfs(void) ··· 492 484 printk(" it is\n"); 493 485 unpack_to_rootfs((char *)initrd_start, 494 486 initrd_end - initrd_start, 0); 495 - free_initrd_mem(initrd_start, initrd_end); 487 + free_initrd(); 496 488 return; 497 489 } 498 490 printk("it isn't (%s); looks like an initrd\n", err); ··· 501 493 sys_write(fd, (char *)initrd_start, 502 494 initrd_end - initrd_start); 503 495 sys_close(fd); 504 - free_initrd_mem(initrd_start, initrd_end); 496 + free_initrd(); 505 497 } 506 498 } 507 499 #endif