Skip to content
  • Kirill A. Shutemov's avatar
    kdump: Write the correct address of mem_section into vmcoreinfo · 9f15b912
    Kirill A. Shutemov authored
    
    
    Depending on configuration mem_section can now be an array or a pointer
    to an array allocated dynamically. In most cases, we can continue to refer
    to it as 'mem_section' regardless of what it is.
    
    But there's one exception: '&mem_section' means "address of the array" if
    mem_section is an array, but if mem_section is a pointer, it would mean
    "address of the pointer".
    
    We've stepped onto this in the kdump code: VMCOREINFO_SYMBOL(mem_section)
    writes down the address of pointer into vmcoreinfo, not the array as we wanted,
    breaking kdump.
    
    Let's introduce VMCOREINFO_SYMBOL_ARRAY() that would handle the
    situation correctly for both cases.
    
    Mike Galbraith <efault@gmx.de>
    Signed-off-by: default avatarKirill A. Shutemov <kirill.shutemov@linux.intel.com>
    Acked-by: default avatarBaoquan He <bhe@redhat.com>
    Acked-by: default avatarDave Young <dyoung@redhat.com>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Vivek Goyal <vgoyal@redhat.com>
    Cc: kexec@lists.infradead.org
    Cc: linux-mm@kvack.org
    Cc: stable@vger.kernel.org
    Fixes: 83e3c487 ("mm/sparsemem: Allocate mem_section at runtime for CONFIG_SPARSEMEM_EXTREME=y")
    Link: http://lkml.kernel.org/r/20180112162532.35896-1-kirill.shutemov@linux.intel.com
    
    
    Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
    9f15b912