linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] FLAT: allow arches to declare a larger alignment than the slab
@ 2010-05-25 19:24 Mike Frysinger
  2010-05-25 19:50 ` Geert Uytterhoeven
                   ` (4 more replies)
  0 siblings, 5 replies; 25+ messages in thread
From: Mike Frysinger @ 2010-05-25 19:24 UTC (permalink / raw)
  To: uclinux-dev, David Howells, David McCullough, Greg Ungerer,
	Paul Mundt
  Cc: uclinux-dist-devel, microblaze-uclinux, Michal Simek, linux-m32r,
	Hirokazu Takata, linux-kernel, Yoshinori Sato, Jie Zhang

From: Jie Zhang <jie.zhang@analog.com>

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.

But let's ignore that and let arches declare a larger FLAT alignment
specifically anyways as some arches are OK with the default slab alignment
but need stricter FLAT alignments for shared FLAT libraries.

The nommu arches might want to check to see if they need to declare this
in their headers as well ...

Signed-off-by: Jie Zhang <jie.zhang@analog.com>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
---
 arch/blackfin/include/asm/flat.h |    2 ++
 fs/binfmt_flat.c                 |   11 ++++++++---
 2 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/arch/blackfin/include/asm/flat.h b/arch/blackfin/include/asm/flat.h
index c1314c5..cf2a73e 100644
--- a/arch/blackfin/include/asm/flat.h
+++ b/arch/blackfin/include/asm/flat.h
@@ -11,6 +11,8 @@
 
 #include <asm/unaligned.h>
 
+#define ARCH_FLAT_DATA_ALIGN			0x20
+
 #define	flat_argvp_envp_on_stack()		0
 #define	flat_old_ram_flag(flags)		(flags)
 
diff --git a/fs/binfmt_flat.c b/fs/binfmt_flat.c
index 49566c1..6906170 100644
--- a/fs/binfmt_flat.c
+++ b/fs/binfmt_flat.c
@@ -56,12 +56,17 @@
 #endif
 
 /*
- * User data (stack, data section and bss) needs to be aligned
- * for the same reasons as SLAB memory is, and to the same amount.
+ * User data (stack, data section and bss) needs to be aligned.
+ * If ARCH_FLAT_DATA_ALIGN is defined, use it.
+ */
+#ifdef ARCH_FLAT_DATA_ALIGN
+#define FLAT_DATA_ALIGN	(ARCH_FLAT_DATA_ALIGN)
+/* Otherwise user data nees to be aligned for the same reasons
+ * as SLAB memory is aligned, and to the same amount.
  * Avoid duplicating architecture specific code by using the same
  * macro as with SLAB allocation:
  */
-#ifdef ARCH_SLAB_MINALIGN
+#elif defined(ARCH_SLAB_MINALIGN)
 #define FLAT_DATA_ALIGN	(ARCH_SLAB_MINALIGN)
 #else
 #define FLAT_DATA_ALIGN	(sizeof(void *))
-- 
1.7.1


^ permalink raw reply related	[flat|nested] 25+ messages in thread

end of thread, other threads:[~2010-06-06  7:07 UTC | newest]

Thread overview: 25+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-05-25 19:24 [PATCH] FLAT: allow arches to declare a larger alignment than the slab Mike Frysinger
2010-05-25 19:50 ` Geert Uytterhoeven
2010-05-25 21:07 ` Paul Mundt
2010-05-25 23:17   ` Mike Frysinger
2010-05-26  2:23     ` Jie Zhang
2010-05-26  6:59       ` Geert Uytterhoeven
2010-05-26  7:23         ` Mike Frysinger
2010-05-26  7:33           ` Paul Mundt
2010-05-26  7:36             ` Mike Frysinger
2010-05-26  7:36       ` Mike Frysinger
2010-05-26  7:48     ` Paul Mundt
2010-05-26  8:01       ` Mike Frysinger
2010-05-26  7:24 ` Michal Simek
2010-05-26  8:45 ` [PATCH 1/2 v2] FLAT: split the stack & data alignments Mike Frysinger
2010-05-27  8:24   ` Michal Simek
2010-05-27 18:30     ` [Uclinux-dist-devel] " Mike Frysinger
2010-05-27 23:15       ` [microblaze-uclinux] " David McCullough
2010-05-28  4:57         ` Mike Frysinger
2010-05-28  6:05   ` Mike Frysinger
2010-05-28  6:23   ` David McCullough
2010-05-28  6:40   ` Greg Ungerer
2010-05-26  8:45 ` [PATCH 2/2 v2] FLAT: tweak default stack alignment Mike Frysinger
2010-05-28  6:24   ` David McCullough
2010-05-28  6:39   ` Greg Ungerer
2010-06-06  7:12   ` [PATCH v3] " Mike Frysinger

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).