Re: GIT head no longer boots on x86-64

Jiri Slaby
2008-10-15T13:19:26Z

On 10/15/2008 01:51 PM, Ingo Molnar wrote:
> Queued the fix below up in tip/x86/urgent for a merge to Linus later
> today. Thanks!

Thanks. Omitted S-O-B below.

> From 5870942537422066655816e971629aa729c023d8 Mon Sep 17 00:00:00 2001
> From: Jiri Slaby <jirislaby@gmail.com>
> Date: Mon, 13 Oct 2008 17:11:33 +0200
> Subject: [PATCH] x86: fix CONFIG_DEBUG_VIRTUAL=y boot crash on x86-64
>
> Alan reported a bootup crash in the module loader:
>
>> BUG? vmalloc_to_page (from text_poke+0x30/0x14a): ffffffffa01e40b1
>
> SMP kernel is running on UP, in such a case the module .text
> is patched to use UP locks before the module is added to the modules
> list and it thinks there are no valid data at that place while
> patching.
>
> Also the !is_module_address(addr) test is useless now.
>
> Reported-by: Alan Cox <alan@lxorguk.ukuu.org.uk>

Signed-off-by: Jiri Slaby <jirislaby@gmail.com>

> Signed-off-by: Ingo Molnar <mingo@elte.hu>
> Tested-by: Alan Cox <alan@lxorguk.ukuu.org.uk>
> ---
> include/linux/mm.h | 4 ++++
> 1 files changed, 4 insertions(+), 0 deletions(-)
>
> diff --git a/include/linux/mm.h b/include/linux/mm.h
> index c61ba10..45772fd 100644
> --- a/include/linux/mm.h
> +++ b/include/linux/mm.h
> @@ -267,6 +267,10 @@ static inline int is_vmalloc_addr(const void *x)
> #ifdef CONFIG_MMU
> unsigned long addr = (unsigned long)x;
>
> +#ifdef CONFIG_X86_64
> + if (addr >= MODULES_VADDR && addr < MODULES_END)
> + return 1;
> +#endif
> return addr >= VMALLOC_START && addr < VMALLOC_END;
> #else
> return 0;