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
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Thu, 08 Apr 2010 11:03:22 -0700
From:	Yinghai <yinghai.lu@...cle.com>
To:	Liang Li <liang.li@...driver.com>
CC:	Jeremy Fitzhardinge <jeremy@...p.org>,
	Yinghai <yinghai.lu@...cle.com>,
	Rusty Russell <rusty@...tcorp.com.au>,
	akpm@...ux-foundation.org, hpa@...or.com, mingo@...e.hu,
	tglx@...utronix.de, wangchen@...fujitsu.com,
	"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>
Subject: Re: + x86-fix-handling-of-the-reservetop-boot-option.patch added
 to -mm tree

On 04/08/2010 10:12 AM, Jeremy Fitzhardinge wrote:
> On 04/08/2010 01:58 AM, Liang Li wrote:
>>>     
>> When linux as vmi/xen/lguest guest OS, kernel call reserve_top_address
>> before start_kernel. It is far before the start_kernel hence far before
>> setup_arch->early_ioremap_init. So it is unsafe to place
>> fixup_early_ioremap inside reserve_top_address. So I think the patch
>> should be:
>>   
> 
> Yes indeed.  That looks better.
> 
> Acked-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@...rix.com>
> 

good.

Liang please resubmit with clear version changelog.

like

-v2: ...
-v3: move fixup_early_ioremap out of reserve_top_address..

Yinghai

> Thanks,
>     J
> 
>> From 7cefa9a80c4434f2941a7072d39b1f1ffc08a40f Mon Sep 17 00:00:00 2001
>> From: Liang Li <liang.li@...driver.com>
>> Date: Mon, 22 Mar 2010 18:38:14 +0800
>> Subject: [PATCH] x86: let 'reservetop' functioning right
>>
>> When specify 'reservetop=0xbadc0de' kernel parameter, the kernel will
>> stop booting due to a early_ioremap bug that relate to commit 8827247ff.
>>
>> The root cause of boot failure problem is the value of 'slot_virt[i]'
>> was initialized in setup_arch->early_ioremap_init. But later in
>> setup_arch, the function 'parse_early_param' will modify 'FIXADDR_TOP'
>> when 'reservetop=0xbadc0de' being specified.
>>
>> When reservetop being handled then FIXADDR_TOP get adjusted, Hence check
>> prev_map then re-initialize slot_virt and PMD based on new FIXADDR_TOP.
>>
>> Signed-off-by: Liang Li <liang.li@...driver.com>
>> Cc: Wang Chen <wangchen@...fujitsu.com>
>> Cc: Ingo Molnar <mingo@...e.hu>
>> Cc: Thomas Gleixner <tglx@...utronix.de>
>> Cc: "H. Peter Anvin" <hpa@...or.com>
>> Cc: Yinghai Lu <yinghai@...nel.org>
>> Cc: Andrew Morton <akpm@...ux-foundation.org>
>> ---
>>  arch/x86/include/asm/io.h |    1 +
>>  arch/x86/mm/ioremap.c     |   15 +++++++++++++++
>>  arch/x86/mm/pgtable_32.c  |    1 +
>>  3 files changed, 17 insertions(+), 0 deletions(-)
>>
>> diff --git a/arch/x86/include/asm/io.h b/arch/x86/include/asm/io.h
>> index a1dcfa3..30a3e97 100644
>> --- a/arch/x86/include/asm/io.h
>> +++ b/arch/x86/include/asm/io.h
>> @@ -347,6 +347,7 @@ extern void __iomem *early_ioremap(resource_size_t phys_addr,
>>  extern void __iomem *early_memremap(resource_size_t phys_addr,
>>  				    unsigned long size);
>>  extern void early_iounmap(void __iomem *addr, unsigned long size);
>> +extern void fixup_early_ioremap(void);
>>  
>>  #define IO_SPACE_LIMIT 0xffff
>>  
>> diff --git a/arch/x86/mm/ioremap.c b/arch/x86/mm/ioremap.c
>> index 5eb1ba7..e4ab706 100644
>> --- a/arch/x86/mm/ioremap.c
>> +++ b/arch/x86/mm/ioremap.c
>> @@ -448,6 +448,21 @@ static inline void __init early_clear_fixmap(enum fixed_addresses idx)
>>  static void __iomem *prev_map[FIX_BTMAPS_SLOTS] __initdata;
>>  static unsigned long prev_size[FIX_BTMAPS_SLOTS] __initdata;
>>  
>> +void __init fixup_early_ioremap(void)
>> +{
>> +	int i;
>> +	for (i = 0; i < FIX_BTMAPS_SLOTS; i++) {
>> +		if (prev_map[i])
>> +			break;
>> +	}
>> +
>> +	if (i < FIX_BTMAPS_SLOTS)
>> +		BUG_ON(1);
>> +
>> +	early_ioremap_init();
>> +	return;
>> +}
>> +
>>  static int __init check_early_ioremap_leak(void)
>>  {
>>  	int count = 0;
>> diff --git a/arch/x86/mm/pgtable_32.c b/arch/x86/mm/pgtable_32.c
>> index 1a8faf0..26eadaa 100644
>> --- a/arch/x86/mm/pgtable_32.c
>> +++ b/arch/x86/mm/pgtable_32.c
>> @@ -128,6 +128,7 @@ static int __init parse_reservetop(char *arg)
>>  
>>  	address = memparse(arg, &arg);
>>  	reserve_top_address(address);
>> +	fixup_early_ioremap();
>>  	return 0;
>>  }
>>  early_param("reservetop", parse_reservetop);
>>   
> 

--
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

Powered by Openwall GNU/*/Linux Powered by OpenVZ