[lkml]   [2010]   [Jun]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    Patch in this message
    Subject[PATCH v3] FLAT: tweak default stack alignment
    The recent commit 1f0ce8b3dd667dca7 which moved the ARCH_SLAB_MINALIGN
    default into the global header inadvertently broke FLAT for a bunch of
    systems. Blackfin systems now fail on any FLAT exec with:
    Unable to read code+data+bss, errno 14
    When your /init is a FLAT binary, obviously this can be annoying ;).

    This stems from the alignment usage in the FLAT loader. The behavior
    before was that FLAT would default to ARCH_SLAB_MINALIGN only if it was
    defined, and this was only defined by arches when they wanted a larger
    alignment value. Otherwise it'd default to pointer alignment. Arguably,
    this is kind of hokey that the FLAT is semi-abusing defines it shouldn't.

    So let's merge the two alignment requirements so the floor is never 0.

    Signed-off-by: Mike Frysinger <>
    - split changes & document better

    - combine the diff align values via max_t

    fs/binfmt_flat.c | 6 +-----
    1 files changed, 1 insertions(+), 5 deletions(-)

    diff --git a/fs/binfmt_flat.c b/fs/binfmt_flat.c
    index b6ab27c..811384b 100644
    --- a/fs/binfmt_flat.c
    +++ b/fs/binfmt_flat.c
    @@ -68,11 +68,7 @@
    * Here we can be a bit looser than the data sections since this
    * needs to only meet arch ABI requirements.
    -#define FLAT_STACK_ALIGN (sizeof(void *))
    +#define FLAT_STACK_ALIGN max_t(unsigned long, sizeof(void *), ARCH_SLAB_MINALIGN)

    #define RELOC_FAILED 0xff00ff01 /* Relocation incorrect somewhere */
    #define UNLOADED_LIB 0x7ff000ff /* Placeholder for unused library */

     \ /
      Last update: 2010-06-06 09:11    [W:0.031 / U:32.748 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site