initrd: Fix virtual/physical mix-up in overwrite test
Changes
1 files changed · +3 −2
| File | Status | Add | Del | Content |
|---|---|---|---|---|
| init/main.c | modified | +3 | −2 | View file |
init/main.c
View filediff --git a/init/main.c b/init/main.c
index edeace0..756eca4 100644
--- a/init/main.c
+++ b/init/main.c
@@ -630,9 +630,10 @@ asmlinkage void __init start_kernel(void)
#ifdef CONFIG_BLK_DEV_INITRD
if (initrd_start && !initrd_below_start_ok &&
- initrd_start < min_low_pfn << PAGE_SHIFT) {
+ page_to_pfn(virt_to_page(initrd_start)) < min_low_pfn) {
printk(KERN_CRIT "initrd overwritten (0x%08lx < 0x%08lx) - "
- "disabling it.\n",initrd_start,min_low_pfn << PAGE_SHIFT);
+ "disabling it.\n",
+ page_to_pfn(virt_to_page(initrd_start)), min_low_pfn);
initrd_start = 0;
}
#endif