summaryrefslogtreecommitdiffstats
path: root/recipes-kernel/linux/linux-hierofalcon/03-arm64-don-t-set-READ_IMPLIES_EXEC-for-EM_AARCH64-ELF.patch
diff options
context:
space:
mode:
Diffstat (limited to 'recipes-kernel/linux/linux-hierofalcon/03-arm64-don-t-set-READ_IMPLIES_EXEC-for-EM_AARCH64-ELF.patch')
-rw-r--r--recipes-kernel/linux/linux-hierofalcon/03-arm64-don-t-set-READ_IMPLIES_EXEC-for-EM_AARCH64-ELF.patch54
1 files changed, 54 insertions, 0 deletions
diff --git a/recipes-kernel/linux/linux-hierofalcon/03-arm64-don-t-set-READ_IMPLIES_EXEC-for-EM_AARCH64-ELF.patch b/recipes-kernel/linux/linux-hierofalcon/03-arm64-don-t-set-READ_IMPLIES_EXEC-for-EM_AARCH64-ELF.patch
new file mode 100644
index 0000000..01701a9
--- /dev/null
+++ b/recipes-kernel/linux/linux-hierofalcon/03-arm64-don-t-set-READ_IMPLIES_EXEC-for-EM_AARCH64-ELF.patch
@@ -0,0 +1,54 @@
1From b2072dba2431de0cfef3e6fb9823537a812dd90b Mon Sep 17 00:00:00 2001
2From: Adrian Calianu <adrian.calianu@enea.com>
3Date: Mon, 23 Feb 2015 16:48:43 +0100
4Subject: [PATCH 1/1] arm64: don't set READ_IMPLIES_EXEC for EM_AARCH64 ELF
5 objects
6
7Currently, we're accidentally ending up with executable stacks on
8AArch64 when the ABI says we shouldn't be, and relying on glibc to
9fix things up for us when we're loaded. However, SELinux will deny us
10mucking with the stack, and hit us with execmem AVCs.
11
12current->personality & READ_IMPLIES_EXEC is currently being set for
13AArch64 binaries, resulting in an executable stack, when no explicit
14PT_GNU_STACK header is present.
15
16[kmcmarti@sedition ~]$ uname -p
17aarch64
18[kmcmarti@sedition ~]$ cat /proc/$$/personality
1900400000
20The reason for this is, without an explicit PT_GNU_STACK entry in the
21binary, stk is still set to EXSTACK_DEFAULT (which should be
22non-executable on AArch64.) As a result, elf_read_implies_exec is true,
23and we set READ_IMPLIES_EXEC in binfmt_elf.c:load_elf_binary.
24
25Fix this to return 0 in the native case, and parrot the logic from
26arch/arm/kernel/elf.c otherwise. With this patch, binaries correctly
27don't have READ_IMPLIES_EXEC set, and we can let PT_GNU_STACK change
28things if it's explicitly requested.
29
30Patch provided by:
31Signed-off-by: Kyle McMartin <kyle@redhat.com>
32
33Signed-off-by: Adrian Calianu <adrian.calianu@enea.com>
34---
35 arch/arm64/include/asm/elf.h | 3 ++-
36 1 file changed, 2 insertions(+), 1 deletion(-)
37
38diff --git a/arch/arm64/include/asm/elf.h b/arch/arm64/include/asm/elf.h
39index 1f65be3..dbc9888 100644
40--- a/arch/arm64/include/asm/elf.h
41+++ b/arch/arm64/include/asm/elf.h
42@@ -114,7 +114,8 @@ typedef struct user_fpsimd_state elf_fpregset_t;
43 */
44 #define elf_check_arch(x) ((x)->e_machine == EM_AARCH64)
45
46-#define elf_read_implies_exec(ex,stk) (stk != EXSTACK_DISABLE_X)
47+#define elf_read_implies_exec(ex,stk) (test_thread_flag(TIF_32BIT) \
48+ ? (stk == EXSTACK_ENABLE_X) : 0)
49
50 #define CORE_DUMP_USE_REGSET
51 #define ELF_EXEC_PAGESIZE PAGE_SIZE
52--
531.9.1
54