lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Wed, 10 Dec 2008 16:20:06 -0800 From: Yinghai Lu <yinghai@...nel.org> To: Zachary Amsden <zach@...are.com> CC: Huang Ying <ying.huang@...el.com>, Jeremy Fitzhardinge <jeremy@...p.org>, "H. Peter Anvin" <hpa@...or.com>, Thomas Gleixner <tglx@...utronix.de>, Ingo Molnar <mingo@...e.hu>, Andrew Morton <akpm@...ux-foundation.org>, "norman@...backs.co.uk" <norman@...backs.co.uk>, Linux Kernel Mailing List <linux-kernel@...r.kernel.org>, Linus Torvalds <torvalds@...ux-foundation.org>, Greg KH <gregkh@...e.de>, Alok Kataria <alokkataria1@...il.com>, Bruno Prémont <"bruno .premont"@restena.lu>, "xl@...igned.net" <xl@...igned.net>, "dsd@...too.org" <dsd@...too.org> Subject: Re: [PATCH] Fix VMI crash on boot in 2.6.27+ kernels Zachary Amsden wrote: > On Tue, 2008-12-09 at 17:15 -0800, Yinghai Lu wrote: > >> you can not move that late, >> >> parse_setup_data==>early_memremap==>__early_ioremap > > How does this look? > diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c index 9d5674f..4c381cb 100644 --- a/arch/x86/kernel/setup.c +++ b/arch/x86/kernel/setup.c @@ -794,6 +794,11 @@ void __init setup_arch(char **cmdline_p) printk(KERN_INFO "Command line: %s\n", boot_command_line); #endif +#ifdef CONFIG_VMI + /* VMI may relocate the fixmap; do this before touching ioremap area */ + vmi_init(); +#endif + early_cpu_init(); early_ioremap_init(); @@ -880,12 +885,9 @@ void __init setup_arch(char **cmdline_p) check_efer(); #endif -#if defined(CONFIG_VMI) && defined(CONFIG_X86_32) - /* - * Must be before kernel pagetables are setup - * or fixmap area is touched. - */ - vmi_init(); +#if defined(CONFIG_VMI) + /* Must be before kernel pagetables are setup */ + vmi_activate(); #endif /* after early param, so could get panic from serial */ diff --git a/arch/x86/kernel/vmi_32.c b/arch/x86/kernel/vmi_32.c index 8b6c393..22fd657 100644 --- a/arch/x86/kernel/vmi_32.c +++ b/arch/x86/kernel/vmi_32.c @@ -960,8 +960,6 @@ static inline int __init activate_vmi(void) void __init vmi_init(void) { - unsigned long flags; - if (!vmi_rom) probe_vmi_rom(); else @@ -973,13 +971,21 @@ void __init vmi_init(void) reserve_top_address(-vmi_rom->virtual_top); it seems still have some problem. you moved reserve_top_address before parse_parameter... so void __init reserve_top_address(unsigned long reserve) { BUG_ON(fixmaps_set > 0); printk(KERN_INFO "Reserving virtual address space above 0x%08x\n", (int)-reserve); __FIXADDR_TOP = -reserve - PAGE_SIZE; __VMALLOC_RESERVE += reserve; } /* * vmalloc=size forces the vmalloc area to be exactly 'size' * bytes. This can be used to increase (or decrease) the * vmalloc area - the default is 128m. */ static int __init parse_vmalloc(char *arg) { if (!arg) return -EINVAL; /* Add VMALLOC_OFFSET to the parsed value due to vm area guard hole*/ __VMALLOC_RESERVE = memparse(arg, &arg) + VMALLOC_OFFSET; return 0; } early_param("vmalloc", parse_vmalloc); __VMALLOC_RESERVE will be overwriten by vmalloc=... you may need to split reserve_top_address() to two functions... YH -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@...r.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists