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, 26 Jun 2008 19:52:34 -0700
From:	"Yinghai Lu" <yhlu.kernel@...il.com>
To:	"Huang, Ying" <ying.huang@...el.com>
Cc:	"H. Peter Anvin" <hpa@...or.com>, andi@...stfloor.org,
	mingo@...hat.com, tglx@...utronix.de, linux-kernel@...r.kernel.org
Subject: Re: [PATCH 1/2] x86 boot: add E820_RESVD_KERN

On Thu, Jun 26, 2008 at 7:48 PM, Huang, Ying <ying.huang@...el.com> wrote:
> On Thu, 2008-06-26 at 19:22 -0700, Yinghai Lu wrote:
>> On Thu, Jun 26, 2008 at 2:47 AM, Yinghai Lu <yhlu.kernel@...il.com> wrote:
>> > On Thu, Jun 26, 2008 at 12:48 AM, Huang, Ying <ying.huang@...el.com> wrote:
>> >> On Thu, 2008-06-26 at 00:25 -0700, Yinghai Lu wrote:
>> >> [...]
>> >>> >                if (pfn >= limit_pfn)
>> >>> > @@ -977,7 +978,7 @@ u64 __init early_reserve_e820(u64 startt
>> >>> >                return 0;
>> >>> >
>> >>> >        addr = round_down(start + size - sizet, align);
>> >>> > -       e820_update_range(addr, sizet, E820_RAM, E820_RESERVED);
>> >>> > +       e820_update_range(addr, sizet, E820_RAM, E820_RESVD_KERN);
>> >>>
>> >>> this line is not needed.
>> >>
>> >> Why? Memory reserved by early_rserved_e820 should not be saved during
>> >> hibernation? shoudl not be saved by kdump?
>> >>
>
> Can you tell me why this line is not needed?

that function only have one user. the mpc reserve_new, so we want it
to be E820_RESERVED, and kexec  tools could have that range reserved,
the next kernel will not overwrite the updated mptable.

>
> [...]
>> some like the attach patch...
>>
>> you still can merge parse_setup_data parse_e820_ext
>> also entries in parse_e820_ext is not initialized..., __copy_e820_map
>> will do nothing.
>
> OK. Because some E820 entries are available after parse_setup_data(),
> it is better to call reserve_setup_data() after calling
> parse_setup_data() if update_e820_range() is used instead of
> reserve_early().

can you double check parse_e820_ext()?
it seems entries is not initialized properly,

void __init parse_e820_ext(struct setup_data *sdata, unsigned long pa_data)
{
        u32 map_len;
        int entries;
        struct e820entry *extmap;

        entries = sdata->len / sizeof(struct e820entry);
        map_len = sdata->len + sizeof(struct setup_data);
        if (map_len > PAGE_SIZE)
                sdata = early_ioremap(pa_data, map_len);
        extmap = (struct e820entry *)(sdata->data);
        __copy_e820_map(extmap, entries);===========> what is value for entries?
        sanitize_e820_map(e820.map, ARRAY_SIZE(e820.map), &e820.nr_map);
        if (map_len > PAGE_SIZE)
                early_iounmap(sdata, map_len);
        printk(KERN_INFO "extended physical RAM map:\n");
        e820_print_map("extended");
}


YH

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ