• HATAYAMA Daisuke's avatar
    vmcore: treat memory chunks referenced by PT_LOAD program header entries in... · 7f614cd1
    HATAYAMA Daisuke authored
    vmcore: treat memory chunks referenced by PT_LOAD program header entries in page-size boundary in vmcore_list
    
    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.  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.
    Signed-off-by: default avatarHATAYAMA Daisuke <d.hatayama@jp.fujitsu.com>
    Acked-by: default avatarVivek Goyal <vgoyal@redhat.com>
    Cc: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
    Cc: Atsushi Kumagai <kumagai-atsushi@mxc.nes.nec.co.jp>
    Cc: Lisa Mitchell <lisa.mitchell@hp.com>
    Cc: Zhang Yanfei <zhangyanfei@cn.fujitsu.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    7f614cd1
vmcore.c 16.5 KB