Browse Source

[ARM] disable NX support for OABI-supporting kernels

Our signal syscall restart handling for these kernels still uses
the userspace stack to build code for restarting the syscall.
Unfortunately, fixing this is non-trivial, and so for the time
being, we resolve the problem by disabling NX support.

Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Russell King 16 years ago
parent
commit
14f0aa3593
1 changed files with 9 additions and 0 deletions
  1. 9 0
      arch/arm/kernel/elf.c

+ 9 - 0
arch/arm/kernel/elf.c

@@ -78,6 +78,15 @@ int arm_elf_read_implies_exec(const struct elf32_hdr *x, int executable_stack)
 		return 1;
 		return 1;
 	if (cpu_architecture() < CPU_ARCH_ARMv6)
 	if (cpu_architecture() < CPU_ARCH_ARMv6)
 		return 1;
 		return 1;
+#if !defined(CONFIG_AEABI) || defined(CONFIG_OABI_COMPAT)
+	/*
+	 * If we have support for OABI programs, we can never allow NX
+	 * support - our signal syscall restart mechanism relies upon
+	 * being able to execute code placed on the user stack.
+	 */
+	return 1;
+#else
 	return 0;
 	return 0;
+#endif
 }
 }
 EXPORT_SYMBOL(arm_elf_read_implies_exec);
 EXPORT_SYMBOL(arm_elf_read_implies_exec);