Skip to content
  • Philipp Rudo's avatar
    include/linux/kexec.h: silence compile warnings · ee6ebeda
    Philipp Rudo authored
    Patch series "kexec_file: Clean up purgatory load", v2.
    
    Following the discussion with Dave and AKASHI, here are the common code
    patches extracted from my recent patch set (Add kexec_file_load support
    to s390) [1].  The patches were extracted to allow upstream integration
    together with AKASHI's common code patches before the arch code gets
    adjusted to the new base.
    
    The reason for this series is to prepare common code for adding
    kexec_file_load to s390 as well as cleaning up the mis-use of the
    sh_offset field during purgatory load.  In detail this series contains:
    
    Patch #1&2: Minor cleanups/fixes.
    
    Patch #3-9: Clean up the purgatory load/relocation code.  Especially
    remove the mis-use of the purgatory_info->sechdrs->sh_offset field,
    currently holding a pointer into either kexec_purgatory (ro) or
    purgatory_buf (rw) depending on the section.  With these patches the
    section address will be calculated verbosely and sh_offset will contain
    the offset of the section in the stripped purgatory binary
    (purgatory_buf).
    
    Patch #10: Allows architectures to set the purgatory load address.  This
    patch is important for s390 as the kernel and purgatory have to be
    loaded to fixed addresses.  In current code this is impossible as the
    purgatory load is opaque to the architecture.
    
    Patch #11: Moves x86 purgatories sha implementation to common lib/
    directory to allow reuse in other architectures.
    
    This patch (of 11)
    
    When building the kernel with CONFIG_KEXEC_FILE enabled gcc prints a
    compile warning multiple times.
    
      In file included from <path>/linux/init/initramfs.c:526:0:
      <path>/include/linux/kexec.h:120:9: warning: `struct kimage' declared inside parameter list [enabled by default]
               unsigned long cmdline_len);
               ^
    
    This is because the typedefs for kexec_file_load uses struct kimage
    before it is declared.  Fix this by simply forward declaring struct
    kimage.
    
    Link: http://lkml.kernel.org/r/20180321112751.22196-2-prudo@linux.vnet.ibm.com
    
    
    Signed-off-by: default avatarPhilipp Rudo <prudo@linux.vnet.ibm.com>
    Acked-by: default avatarDave Young <dyoung@redhat.com>
    Cc: Eric Biederman <ebiederm@xmission.com>
    Cc: Vivek Goyal <vgoyal@redhat.com>
    Cc: Michael Ellerman <mpe@ellerman.id.au>
    Cc: Thiago Jung Bauermann <bauerman@linux.vnet.ibm.com>
    Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
    Cc: AKASHI Takahiro <takahiro.akashi@linaro.org>
    Cc: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    ee6ebeda