Thread (170 messages) 170 messages, 19 authors, 2012-09-16

[PATCH v2 16/31] arm64: ELF definitions

From: Will Deacon <hidden>
Date: 2012-08-16 10:23:14
Also in: linux-arch, lkml

On Wed, Aug 15, 2012 at 03:15:39PM +0100, Arnd Bergmann wrote:
On Tuesday 14 August 2012, Catalin Marinas wrote:
quoted
+
+void elf_set_personality(int personality)
+{
+       switch (personality & PER_MASK) {
+       case PER_LINUX:
+               clear_thread_flag(TIF_32BIT);
+               break;
+       case PER_LINUX32:
+               set_thread_flag(TIF_32BIT);
+               break;
+       default:
+               pr_warning("Process %s tried to assume unknown personality %d\n",
+                          current->comm, personality);
+               return;
+       }
+
+       current->personality = personality;
+}
+EXPORT_SYMBOL(elf_set_personality);
This looks wrong: PER_LINUX/PER_LINUX32 decides over the output of the
uname system call, while TIF_32BIT decides over the instruction set
when returning to user space. You definitely should not set the personality
to the value you pass from the elf loader. Instead, just do

#define SET_PERSONALITY(ex) clear_thread_flag(TIF_32BIT);
#defined COMPAT_SET_PERSONALITY(ex) set_thread_flag(TIF_32BIT);
In this case, won't uname be incorrect (aarch64l) for aarch32 tasks (which
expect something like armv8l)?

Will
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help