[PATCH v8 3/9] vmcore: treat memory chunks referenced by PT_LOAD program header entries in page-size boundary in vmcore_list

Andrew Morton akpm at linux-foundation.org
Thu May 23 17:49:28 EDT 2013


On Thu, 23 May 2013 14:25:13 +0900 HATAYAMA Daisuke <d.hatayama at jp.fujitsu.com> wrote:

> Treat memory chunks referenced by PT_LOAD program header entries in
> page-size boundary in vmcore_list. Formally, for each range [start,
> end], we set up the corresponding vmcore object in vmcore_list to
> [rounddown(start, PAGE_SIZE), roundup(end, PAGE_SIZE)].
> 
> This change affects layout of /proc/vmcore.

Well, changing a userspace interface is generally unacceptable because
it can break existing userspace code.

If you think the risk is acceptable then please do explain why.  In
great detail!

> The gaps generated by the
> rearrangement are newly made visible to applications as
> holes. Concretely, they are two ranges [rounddown(start, PAGE_SIZE),
> start] and [end, roundup(end, PAGE_SIZE)].
> 
> Suppose variable m points at a vmcore object in vmcore_list, and
> variable phdr points at the program header of PT_LOAD type the
> variable m corresponds to. Then, pictorially:
> 
>   m->offset                    +---------------+
>                                | hole          |
> phdr->p_offset =               +---------------+
>   m->offset + (paddr - start)  |               |\
>                                | kernel memory | phdr->p_memsz
>                                |               |/
>                                +---------------+
>                                | hole          |
>   m->offset + m->size          +---------------+
> 
> where m->offset and m->offset + m->size are always page-size aligned.



More information about the kexec mailing list