On Tuesday 14 August 2012, Catalin Marinas wrote: > + > +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); I also don't see a reason to export this. You'd have trouble loading the elf interpreter module from user space without the elf interpreter. Arnd -- To unsubscribe from this list: send the line "unsubscribe linux-arch" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html