diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2014-12-13 16:00:36 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2014-12-13 16:00:36 -0500 |
commit | 78a45c6f067824cf5d0a9fedea7339ac2e28603c (patch) | |
tree | b4f78c8b6b9059ddace0a18c11629b8d2045f793 /arch | |
parent | f96fe225677b3efb74346ebd56fafe3997b02afa (diff) | |
parent | 29d293b6007b91a4463f05bc8d0b26e0e65c5816 (diff) |
Merge branch 'akpm' (second patch-bomb from Andrew)
Merge second patchbomb from Andrew Morton:
- the rest of MM
- misc fs fixes
- add execveat() syscall
- new ratelimit feature for fault-injection
- decompressor updates
- ipc/ updates
- fallocate feature creep
- fsnotify cleanups
- a few other misc things
* emailed patches from Andrew Morton <akpm@linux-foundation.org>: (99 commits)
cgroups: Documentation: fix trivial typos and wrong paragraph numberings
parisc: percpu: update comments referring to __get_cpu_var
percpu: update local_ops.txt to reflect this_cpu operations
percpu: remove __get_cpu_var and __raw_get_cpu_var macros
fsnotify: remove destroy_list from fsnotify_mark
fsnotify: unify inode and mount marks handling
fallocate: create FAN_MODIFY and IN_MODIFY events
mm/cma: make kmemleak ignore CMA regions
slub: fix cpuset check in get_any_partial
slab: fix cpuset check in fallback_alloc
shmdt: use i_size_read() instead of ->i_size
ipc/shm.c: fix overly aggressive shmdt() when calls span multiple segments
ipc/msg: increase MSGMNI, remove scaling
ipc/sem.c: increase SEMMSL, SEMMNI, SEMOPM
ipc/sem.c: change memory barrier in sem_lock() to smp_rmb()
lib/decompress.c: consistency of compress formats for kernel image
decompress_bunzip2: off by one in get_next_block()
usr/Kconfig: make initrd compression algorithm selection not expert
fault-inject: add ratelimit option
ratelimit: add initialization macro
...
Diffstat (limited to 'arch')
-rw-r--r-- | arch/arm/Kconfig | 1 | ||||
-rw-r--r-- | arch/arm64/Kconfig | 1 | ||||
-rw-r--r-- | arch/microblaze/Kconfig | 1 | ||||
-rw-r--r-- | arch/parisc/lib/fixup.S | 4 | ||||
-rw-r--r-- | arch/powerpc/Kconfig | 1 | ||||
-rw-r--r-- | arch/powerpc/mm/hash_utils_64.c | 2 | ||||
-rw-r--r-- | arch/powerpc/mm/pgtable_32.c | 2 | ||||
-rw-r--r-- | arch/s390/Kconfig | 1 | ||||
-rw-r--r-- | arch/s390/mm/pageattr.c | 2 | ||||
-rw-r--r-- | arch/sh/Kconfig | 1 | ||||
-rw-r--r-- | arch/sparc/include/uapi/asm/unistd.h | 3 | ||||
-rw-r--r-- | arch/sparc/kernel/syscalls.S | 10 | ||||
-rw-r--r-- | arch/sparc/kernel/systbls_32.S | 1 | ||||
-rw-r--r-- | arch/sparc/kernel/systbls_64.S | 2 | ||||
-rw-r--r-- | arch/sparc/mm/init_64.c | 2 | ||||
-rw-r--r-- | arch/x86/Kconfig | 1 | ||||
-rw-r--r-- | arch/x86/ia32/audit.c | 1 | ||||
-rw-r--r-- | arch/x86/ia32/ia32entry.S | 1 | ||||
-rw-r--r-- | arch/x86/kernel/audit_64.c | 1 | ||||
-rw-r--r-- | arch/x86/kernel/entry_64.S | 28 | ||||
-rw-r--r-- | arch/x86/mm/pageattr.c | 2 | ||||
-rw-r--r-- | arch/x86/syscalls/syscall_32.tbl | 1 | ||||
-rw-r--r-- | arch/x86/syscalls/syscall_64.tbl | 2 | ||||
-rw-r--r-- | arch/x86/um/sys_call_table_64.c | 1 |
24 files changed, 64 insertions, 8 deletions
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index 0bee1fe209b1..97d07ed60a0b 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig | |||
@@ -5,6 +5,7 @@ config ARM | |||
5 | select ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE | 5 | select ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE |
6 | select ARCH_HAS_TICK_BROADCAST if GENERIC_CLOCKEVENTS_BROADCAST | 6 | select ARCH_HAS_TICK_BROADCAST if GENERIC_CLOCKEVENTS_BROADCAST |
7 | select ARCH_HAVE_CUSTOM_GPIO_H | 7 | select ARCH_HAVE_CUSTOM_GPIO_H |
8 | select ARCH_HAS_GCOV_PROFILE_ALL | ||
8 | select ARCH_MIGHT_HAVE_PC_PARPORT | 9 | select ARCH_MIGHT_HAVE_PC_PARPORT |
9 | select ARCH_SUPPORTS_ATOMIC_RMW | 10 | select ARCH_SUPPORTS_ATOMIC_RMW |
10 | select ARCH_USE_BUILTIN_BSWAP | 11 | select ARCH_USE_BUILTIN_BSWAP |
diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig index 6b1ebd964c10..688db03ef5b8 100644 --- a/arch/arm64/Kconfig +++ b/arch/arm64/Kconfig | |||
@@ -2,6 +2,7 @@ config ARM64 | |||
2 | def_bool y | 2 | def_bool y |
3 | select ARCH_BINFMT_ELF_RANDOMIZE_PIE | 3 | select ARCH_BINFMT_ELF_RANDOMIZE_PIE |
4 | select ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE | 4 | select ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE |
5 | select ARCH_HAS_GCOV_PROFILE_ALL | ||
5 | select ARCH_HAS_SG_CHAIN | 6 | select ARCH_HAS_SG_CHAIN |
6 | select ARCH_HAS_TICK_BROADCAST if GENERIC_CLOCKEVENTS_BROADCAST | 7 | select ARCH_HAS_TICK_BROADCAST if GENERIC_CLOCKEVENTS_BROADCAST |
7 | select ARCH_USE_CMPXCHG_LOCKREF | 8 | select ARCH_USE_CMPXCHG_LOCKREF |
diff --git a/arch/microblaze/Kconfig b/arch/microblaze/Kconfig index a7736fa0580c..0bce820428fc 100644 --- a/arch/microblaze/Kconfig +++ b/arch/microblaze/Kconfig | |||
@@ -1,5 +1,6 @@ | |||
1 | config MICROBLAZE | 1 | config MICROBLAZE |
2 | def_bool y | 2 | def_bool y |
3 | select ARCH_HAS_GCOV_PROFILE_ALL | ||
3 | select ARCH_MIGHT_HAVE_PC_PARPORT | 4 | select ARCH_MIGHT_HAVE_PC_PARPORT |
4 | select ARCH_WANT_IPC_PARSE_VERSION | 5 | select ARCH_WANT_IPC_PARSE_VERSION |
5 | select ARCH_WANT_OPTIONAL_GPIOLIB | 6 | select ARCH_WANT_OPTIONAL_GPIOLIB |
diff --git a/arch/parisc/lib/fixup.S b/arch/parisc/lib/fixup.S index f8c45cc2947d..536ef66bb94b 100644 --- a/arch/parisc/lib/fixup.S +++ b/arch/parisc/lib/fixup.S | |||
@@ -38,14 +38,14 @@ | |||
38 | LDREGX \t2(\t1),\t2 | 38 | LDREGX \t2(\t1),\t2 |
39 | addil LT%exception_data,%r27 | 39 | addil LT%exception_data,%r27 |
40 | LDREG RT%exception_data(%r1),\t1 | 40 | LDREG RT%exception_data(%r1),\t1 |
41 | /* t1 = &__get_cpu_var(exception_data) */ | 41 | /* t1 = this_cpu_ptr(&exception_data) */ |
42 | add,l \t1,\t2,\t1 | 42 | add,l \t1,\t2,\t1 |
43 | /* t1 = t1->fault_ip */ | 43 | /* t1 = t1->fault_ip */ |
44 | LDREG EXCDATA_IP(\t1), \t1 | 44 | LDREG EXCDATA_IP(\t1), \t1 |
45 | .endm | 45 | .endm |
46 | #else | 46 | #else |
47 | .macro get_fault_ip t1 t2 | 47 | .macro get_fault_ip t1 t2 |
48 | /* t1 = &__get_cpu_var(exception_data) */ | 48 | /* t1 = this_cpu_ptr(&exception_data) */ |
49 | addil LT%exception_data,%r27 | 49 | addil LT%exception_data,%r27 |
50 | LDREG RT%exception_data(%r1),\t2 | 50 | LDREG RT%exception_data(%r1),\t2 |
51 | /* t1 = t2->fault_ip */ | 51 | /* t1 = t2->fault_ip */ |
diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig index af696874248b..a2a168e2dfe7 100644 --- a/arch/powerpc/Kconfig +++ b/arch/powerpc/Kconfig | |||
@@ -129,6 +129,7 @@ config PPC | |||
129 | select HAVE_BPF_JIT if PPC64 | 129 | select HAVE_BPF_JIT if PPC64 |
130 | select HAVE_ARCH_JUMP_LABEL | 130 | select HAVE_ARCH_JUMP_LABEL |
131 | select ARCH_HAVE_NMI_SAFE_CMPXCHG | 131 | select ARCH_HAVE_NMI_SAFE_CMPXCHG |
132 | select ARCH_HAS_GCOV_PROFILE_ALL | ||
132 | select GENERIC_SMP_IDLE_THREAD | 133 | select GENERIC_SMP_IDLE_THREAD |
133 | select GENERIC_CMOS_UPDATE | 134 | select GENERIC_CMOS_UPDATE |
134 | select GENERIC_TIME_VSYSCALL_OLD | 135 | select GENERIC_TIME_VSYSCALL_OLD |
diff --git a/arch/powerpc/mm/hash_utils_64.c b/arch/powerpc/mm/hash_utils_64.c index e56a307bc676..2c2022d16059 100644 --- a/arch/powerpc/mm/hash_utils_64.c +++ b/arch/powerpc/mm/hash_utils_64.c | |||
@@ -1514,7 +1514,7 @@ static void kernel_unmap_linear_page(unsigned long vaddr, unsigned long lmi) | |||
1514 | mmu_kernel_ssize, 0); | 1514 | mmu_kernel_ssize, 0); |
1515 | } | 1515 | } |
1516 | 1516 | ||
1517 | void kernel_map_pages(struct page *page, int numpages, int enable) | 1517 | void __kernel_map_pages(struct page *page, int numpages, int enable) |
1518 | { | 1518 | { |
1519 | unsigned long flags, vaddr, lmi; | 1519 | unsigned long flags, vaddr, lmi; |
1520 | int i; | 1520 | int i; |
diff --git a/arch/powerpc/mm/pgtable_32.c b/arch/powerpc/mm/pgtable_32.c index d545b1231594..50fad3801f30 100644 --- a/arch/powerpc/mm/pgtable_32.c +++ b/arch/powerpc/mm/pgtable_32.c | |||
@@ -429,7 +429,7 @@ static int change_page_attr(struct page *page, int numpages, pgprot_t prot) | |||
429 | } | 429 | } |
430 | 430 | ||
431 | 431 | ||
432 | void kernel_map_pages(struct page *page, int numpages, int enable) | 432 | void __kernel_map_pages(struct page *page, int numpages, int enable) |
433 | { | 433 | { |
434 | if (PageHighMem(page)) | 434 | if (PageHighMem(page)) |
435 | return; | 435 | return; |
diff --git a/arch/s390/Kconfig b/arch/s390/Kconfig index f2cf1f90295b..68b68d755fdf 100644 --- a/arch/s390/Kconfig +++ b/arch/s390/Kconfig | |||
@@ -65,6 +65,7 @@ config S390 | |||
65 | def_bool y | 65 | def_bool y |
66 | select ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE | 66 | select ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE |
67 | select ARCH_HAS_DEBUG_STRICT_USER_COPY_CHECKS | 67 | select ARCH_HAS_DEBUG_STRICT_USER_COPY_CHECKS |
68 | select ARCH_HAS_GCOV_PROFILE_ALL | ||
68 | select ARCH_HAVE_NMI_SAFE_CMPXCHG | 69 | select ARCH_HAVE_NMI_SAFE_CMPXCHG |
69 | select ARCH_INLINE_READ_LOCK | 70 | select ARCH_INLINE_READ_LOCK |
70 | select ARCH_INLINE_READ_LOCK_BH | 71 | select ARCH_INLINE_READ_LOCK_BH |
diff --git a/arch/s390/mm/pageattr.c b/arch/s390/mm/pageattr.c index 3fef3b299665..426c9d462d1c 100644 --- a/arch/s390/mm/pageattr.c +++ b/arch/s390/mm/pageattr.c | |||
@@ -120,7 +120,7 @@ static void ipte_range(pte_t *pte, unsigned long address, int nr) | |||
120 | } | 120 | } |
121 | } | 121 | } |
122 | 122 | ||
123 | void kernel_map_pages(struct page *page, int numpages, int enable) | 123 | void __kernel_map_pages(struct page *page, int numpages, int enable) |
124 | { | 124 | { |
125 | unsigned long address; | 125 | unsigned long address; |
126 | int nr, i, j; | 126 | int nr, i, j; |
diff --git a/arch/sh/Kconfig b/arch/sh/Kconfig index a1403470f80e..c6b6ee5f38b2 100644 --- a/arch/sh/Kconfig +++ b/arch/sh/Kconfig | |||
@@ -16,6 +16,7 @@ config SUPERH | |||
16 | select HAVE_DEBUG_BUGVERBOSE | 16 | select HAVE_DEBUG_BUGVERBOSE |
17 | select ARCH_HAVE_CUSTOM_GPIO_H | 17 | select ARCH_HAVE_CUSTOM_GPIO_H |
18 | select ARCH_HAVE_NMI_SAFE_CMPXCHG if (GUSA_RB || CPU_SH4A) | 18 | select ARCH_HAVE_NMI_SAFE_CMPXCHG if (GUSA_RB || CPU_SH4A) |
19 | select ARCH_HAS_GCOV_PROFILE_ALL | ||
19 | select PERF_USE_VMALLOC | 20 | select PERF_USE_VMALLOC |
20 | select HAVE_DEBUG_KMEMLEAK | 21 | select HAVE_DEBUG_KMEMLEAK |
21 | select HAVE_KERNEL_GZIP | 22 | select HAVE_KERNEL_GZIP |
diff --git a/arch/sparc/include/uapi/asm/unistd.h b/arch/sparc/include/uapi/asm/unistd.h index 46d83842eddc..6f35f4df17f2 100644 --- a/arch/sparc/include/uapi/asm/unistd.h +++ b/arch/sparc/include/uapi/asm/unistd.h | |||
@@ -415,8 +415,9 @@ | |||
415 | #define __NR_getrandom 347 | 415 | #define __NR_getrandom 347 |
416 | #define __NR_memfd_create 348 | 416 | #define __NR_memfd_create 348 |
417 | #define __NR_bpf 349 | 417 | #define __NR_bpf 349 |
418 | #define __NR_execveat 350 | ||
418 | 419 | ||
419 | #define NR_syscalls 350 | 420 | #define NR_syscalls 351 |
420 | 421 | ||
421 | /* Bitmask values returned from kern_features system call. */ | 422 | /* Bitmask values returned from kern_features system call. */ |
422 | #define KERN_FEATURE_MIXED_MODE_STACK 0x00000001 | 423 | #define KERN_FEATURE_MIXED_MODE_STACK 0x00000001 |
diff --git a/arch/sparc/kernel/syscalls.S b/arch/sparc/kernel/syscalls.S index 33a17e7b3ccd..bb0008927598 100644 --- a/arch/sparc/kernel/syscalls.S +++ b/arch/sparc/kernel/syscalls.S | |||
@@ -6,6 +6,11 @@ sys64_execve: | |||
6 | jmpl %g1, %g0 | 6 | jmpl %g1, %g0 |
7 | flushw | 7 | flushw |
8 | 8 | ||
9 | sys64_execveat: | ||
10 | set sys_execveat, %g1 | ||
11 | jmpl %g1, %g0 | ||
12 | flushw | ||
13 | |||
9 | #ifdef CONFIG_COMPAT | 14 | #ifdef CONFIG_COMPAT |
10 | sunos_execv: | 15 | sunos_execv: |
11 | mov %g0, %o2 | 16 | mov %g0, %o2 |
@@ -13,6 +18,11 @@ sys32_execve: | |||
13 | set compat_sys_execve, %g1 | 18 | set compat_sys_execve, %g1 |
14 | jmpl %g1, %g0 | 19 | jmpl %g1, %g0 |
15 | flushw | 20 | flushw |
21 | |||
22 | sys32_execveat: | ||
23 | set compat_sys_execveat, %g1 | ||
24 | jmpl %g1, %g0 | ||
25 | flushw | ||
16 | #endif | 26 | #endif |
17 | 27 | ||
18 | .align 32 | 28 | .align 32 |
diff --git a/arch/sparc/kernel/systbls_32.S b/arch/sparc/kernel/systbls_32.S index ad0cdf497b78..e31a9056a303 100644 --- a/arch/sparc/kernel/systbls_32.S +++ b/arch/sparc/kernel/systbls_32.S | |||
@@ -87,3 +87,4 @@ sys_call_table: | |||
87 | /*335*/ .long sys_syncfs, sys_sendmmsg, sys_setns, sys_process_vm_readv, sys_process_vm_writev | 87 | /*335*/ .long sys_syncfs, sys_sendmmsg, sys_setns, sys_process_vm_readv, sys_process_vm_writev |
88 | /*340*/ .long sys_ni_syscall, sys_kcmp, sys_finit_module, sys_sched_setattr, sys_sched_getattr | 88 | /*340*/ .long sys_ni_syscall, sys_kcmp, sys_finit_module, sys_sched_setattr, sys_sched_getattr |
89 | /*345*/ .long sys_renameat2, sys_seccomp, sys_getrandom, sys_memfd_create, sys_bpf | 89 | /*345*/ .long sys_renameat2, sys_seccomp, sys_getrandom, sys_memfd_create, sys_bpf |
90 | /*350*/ .long sys_execveat | ||
diff --git a/arch/sparc/kernel/systbls_64.S b/arch/sparc/kernel/systbls_64.S index 580cde9370c9..d72f76ae70eb 100644 --- a/arch/sparc/kernel/systbls_64.S +++ b/arch/sparc/kernel/systbls_64.S | |||
@@ -88,6 +88,7 @@ sys_call_table32: | |||
88 | .word sys_syncfs, compat_sys_sendmmsg, sys_setns, compat_sys_process_vm_readv, compat_sys_process_vm_writev | 88 | .word sys_syncfs, compat_sys_sendmmsg, sys_setns, compat_sys_process_vm_readv, compat_sys_process_vm_writev |
89 | /*340*/ .word sys_kern_features, sys_kcmp, sys_finit_module, sys_sched_setattr, sys_sched_getattr | 89 | /*340*/ .word sys_kern_features, sys_kcmp, sys_finit_module, sys_sched_setattr, sys_sched_getattr |
90 | .word sys32_renameat2, sys_seccomp, sys_getrandom, sys_memfd_create, sys_bpf | 90 | .word sys32_renameat2, sys_seccomp, sys_getrandom, sys_memfd_create, sys_bpf |
91 | /*350*/ .word sys32_execveat | ||
91 | 92 | ||
92 | #endif /* CONFIG_COMPAT */ | 93 | #endif /* CONFIG_COMPAT */ |
93 | 94 | ||
@@ -167,3 +168,4 @@ sys_call_table: | |||
167 | .word sys_syncfs, sys_sendmmsg, sys_setns, sys_process_vm_readv, sys_process_vm_writev | 168 | .word sys_syncfs, sys_sendmmsg, sys_setns, sys_process_vm_readv, sys_process_vm_writev |
168 | /*340*/ .word sys_kern_features, sys_kcmp, sys_finit_module, sys_sched_setattr, sys_sched_getattr | 169 | /*340*/ .word sys_kern_features, sys_kcmp, sys_finit_module, sys_sched_setattr, sys_sched_getattr |
169 | .word sys_renameat2, sys_seccomp, sys_getrandom, sys_memfd_create, sys_bpf | 170 | .word sys_renameat2, sys_seccomp, sys_getrandom, sys_memfd_create, sys_bpf |
171 | /*350*/ .word sys64_execveat | ||
diff --git a/arch/sparc/mm/init_64.c b/arch/sparc/mm/init_64.c index 2d91c62f7f5f..3ea267c53320 100644 --- a/arch/sparc/mm/init_64.c +++ b/arch/sparc/mm/init_64.c | |||
@@ -1621,7 +1621,7 @@ static void __init kernel_physical_mapping_init(void) | |||
1621 | } | 1621 | } |
1622 | 1622 | ||
1623 | #ifdef CONFIG_DEBUG_PAGEALLOC | 1623 | #ifdef CONFIG_DEBUG_PAGEALLOC |
1624 | void kernel_map_pages(struct page *page, int numpages, int enable) | 1624 | void __kernel_map_pages(struct page *page, int numpages, int enable) |
1625 | { | 1625 | { |
1626 | unsigned long phys_start = page_to_pfn(page) << PAGE_SHIFT; | 1626 | unsigned long phys_start = page_to_pfn(page) << PAGE_SHIFT; |
1627 | unsigned long phys_end = phys_start + (numpages * PAGE_SIZE); | 1627 | unsigned long phys_end = phys_start + (numpages * PAGE_SIZE); |
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig index bea3a0159496..d69f1cd87fd9 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig | |||
@@ -24,6 +24,7 @@ config X86 | |||
24 | select ARCH_MIGHT_HAVE_ACPI_PDC if ACPI | 24 | select ARCH_MIGHT_HAVE_ACPI_PDC if ACPI |
25 | select ARCH_HAS_DEBUG_STRICT_USER_COPY_CHECKS | 25 | select ARCH_HAS_DEBUG_STRICT_USER_COPY_CHECKS |
26 | select ARCH_HAS_FAST_MULTIPLIER | 26 | select ARCH_HAS_FAST_MULTIPLIER |
27 | select ARCH_HAS_GCOV_PROFILE_ALL | ||
27 | select ARCH_MIGHT_HAVE_PC_PARPORT | 28 | select ARCH_MIGHT_HAVE_PC_PARPORT |
28 | select ARCH_MIGHT_HAVE_PC_SERIO | 29 | select ARCH_MIGHT_HAVE_PC_SERIO |
29 | select HAVE_AOUT if X86_32 | 30 | select HAVE_AOUT if X86_32 |
diff --git a/arch/x86/ia32/audit.c b/arch/x86/ia32/audit.c index 5d7b381da692..2eccc8932ae6 100644 --- a/arch/x86/ia32/audit.c +++ b/arch/x86/ia32/audit.c | |||
@@ -35,6 +35,7 @@ int ia32_classify_syscall(unsigned syscall) | |||
35 | case __NR_socketcall: | 35 | case __NR_socketcall: |
36 | return 4; | 36 | return 4; |
37 | case __NR_execve: | 37 | case __NR_execve: |
38 | case __NR_execveat: | ||
38 | return 5; | 39 | return 5; |
39 | default: | 40 | default: |
40 | return 1; | 41 | return 1; |
diff --git a/arch/x86/ia32/ia32entry.S b/arch/x86/ia32/ia32entry.S index ffe71228fc10..82e8a1d44658 100644 --- a/arch/x86/ia32/ia32entry.S +++ b/arch/x86/ia32/ia32entry.S | |||
@@ -480,6 +480,7 @@ GLOBAL(\label) | |||
480 | PTREGSCALL stub32_rt_sigreturn, sys32_rt_sigreturn | 480 | PTREGSCALL stub32_rt_sigreturn, sys32_rt_sigreturn |
481 | PTREGSCALL stub32_sigreturn, sys32_sigreturn | 481 | PTREGSCALL stub32_sigreturn, sys32_sigreturn |
482 | PTREGSCALL stub32_execve, compat_sys_execve | 482 | PTREGSCALL stub32_execve, compat_sys_execve |
483 | PTREGSCALL stub32_execveat, compat_sys_execveat | ||
483 | PTREGSCALL stub32_fork, sys_fork | 484 | PTREGSCALL stub32_fork, sys_fork |
484 | PTREGSCALL stub32_vfork, sys_vfork | 485 | PTREGSCALL stub32_vfork, sys_vfork |
485 | 486 | ||
diff --git a/arch/x86/kernel/audit_64.c b/arch/x86/kernel/audit_64.c index 06d3e5a14d9d..f3672508b249 100644 --- a/arch/x86/kernel/audit_64.c +++ b/arch/x86/kernel/audit_64.c | |||
@@ -50,6 +50,7 @@ int audit_classify_syscall(int abi, unsigned syscall) | |||
50 | case __NR_openat: | 50 | case __NR_openat: |
51 | return 3; | 51 | return 3; |
52 | case __NR_execve: | 52 | case __NR_execve: |
53 | case __NR_execveat: | ||
53 | return 5; | 54 | return 5; |
54 | default: | 55 | default: |
55 | return 0; | 56 | return 0; |
diff --git a/arch/x86/kernel/entry_64.S b/arch/x86/kernel/entry_64.S index c0226ab54106..90878aa38dbd 100644 --- a/arch/x86/kernel/entry_64.S +++ b/arch/x86/kernel/entry_64.S | |||
@@ -652,6 +652,20 @@ ENTRY(stub_execve) | |||
652 | CFI_ENDPROC | 652 | CFI_ENDPROC |
653 | END(stub_execve) | 653 | END(stub_execve) |
654 | 654 | ||
655 | ENTRY(stub_execveat) | ||
656 | CFI_STARTPROC | ||
657 | addq $8, %rsp | ||
658 | PARTIAL_FRAME 0 | ||
659 | SAVE_REST | ||
660 | FIXUP_TOP_OF_STACK %r11 | ||
661 | call sys_execveat | ||
662 | RESTORE_TOP_OF_STACK %r11 | ||
663 | movq %rax,RAX(%rsp) | ||
664 | RESTORE_REST | ||
665 | jmp int_ret_from_sys_call | ||
666 | CFI_ENDPROC | ||
667 | END(stub_execveat) | ||
668 | |||
655 | /* | 669 | /* |
656 | * sigreturn is special because it needs to restore all registers on return. | 670 | * sigreturn is special because it needs to restore all registers on return. |
657 | * This cannot be done with SYSRET, so use the IRET return path instead. | 671 | * This cannot be done with SYSRET, so use the IRET return path instead. |
@@ -697,6 +711,20 @@ ENTRY(stub_x32_execve) | |||
697 | CFI_ENDPROC | 711 | CFI_ENDPROC |
698 | END(stub_x32_execve) | 712 | END(stub_x32_execve) |
699 | 713 | ||
714 | ENTRY(stub_x32_execveat) | ||
715 | CFI_STARTPROC | ||
716 | addq $8, %rsp | ||
717 | PARTIAL_FRAME 0 | ||
718 | SAVE_REST | ||
719 | FIXUP_TOP_OF_STACK %r11 | ||
720 | call compat_sys_execveat | ||
721 | RESTORE_TOP_OF_STACK %r11 | ||
722 | movq %rax,RAX(%rsp) | ||
723 | RESTORE_REST | ||
724 | jmp int_ret_from_sys_call | ||
725 | CFI_ENDPROC | ||
726 | END(stub_x32_execveat) | ||
727 | |||
700 | #endif | 728 | #endif |
701 | 729 | ||
702 | /* | 730 | /* |
diff --git a/arch/x86/mm/pageattr.c b/arch/x86/mm/pageattr.c index a3a5d46605d2..dfaf2e0f5f8f 100644 --- a/arch/x86/mm/pageattr.c +++ b/arch/x86/mm/pageattr.c | |||
@@ -1817,7 +1817,7 @@ static int __set_pages_np(struct page *page, int numpages) | |||
1817 | return __change_page_attr_set_clr(&cpa, 0); | 1817 | return __change_page_attr_set_clr(&cpa, 0); |
1818 | } | 1818 | } |
1819 | 1819 | ||
1820 | void kernel_map_pages(struct page *page, int numpages, int enable) | 1820 | void __kernel_map_pages(struct page *page, int numpages, int enable) |
1821 | { | 1821 | { |
1822 | if (PageHighMem(page)) | 1822 | if (PageHighMem(page)) |
1823 | return; | 1823 | return; |
diff --git a/arch/x86/syscalls/syscall_32.tbl b/arch/x86/syscalls/syscall_32.tbl index 9fe1b5d002f0..b3560ece1c9f 100644 --- a/arch/x86/syscalls/syscall_32.tbl +++ b/arch/x86/syscalls/syscall_32.tbl | |||
@@ -364,3 +364,4 @@ | |||
364 | 355 i386 getrandom sys_getrandom | 364 | 355 i386 getrandom sys_getrandom |
365 | 356 i386 memfd_create sys_memfd_create | 365 | 356 i386 memfd_create sys_memfd_create |
366 | 357 i386 bpf sys_bpf | 366 | 357 i386 bpf sys_bpf |
367 | 358 i386 execveat sys_execveat stub32_execveat | ||
diff --git a/arch/x86/syscalls/syscall_64.tbl b/arch/x86/syscalls/syscall_64.tbl index 281150b539a2..8d656fbb57aa 100644 --- a/arch/x86/syscalls/syscall_64.tbl +++ b/arch/x86/syscalls/syscall_64.tbl | |||
@@ -328,6 +328,7 @@ | |||
328 | 319 common memfd_create sys_memfd_create | 328 | 319 common memfd_create sys_memfd_create |
329 | 320 common kexec_file_load sys_kexec_file_load | 329 | 320 common kexec_file_load sys_kexec_file_load |
330 | 321 common bpf sys_bpf | 330 | 321 common bpf sys_bpf |
331 | 322 64 execveat stub_execveat | ||
331 | 332 | ||
332 | # | 333 | # |
333 | # x32-specific system call numbers start at 512 to avoid cache impact | 334 | # x32-specific system call numbers start at 512 to avoid cache impact |
@@ -366,3 +367,4 @@ | |||
366 | 542 x32 getsockopt compat_sys_getsockopt | 367 | 542 x32 getsockopt compat_sys_getsockopt |
367 | 543 x32 io_setup compat_sys_io_setup | 368 | 543 x32 io_setup compat_sys_io_setup |
368 | 544 x32 io_submit compat_sys_io_submit | 369 | 544 x32 io_submit compat_sys_io_submit |
370 | 545 x32 execveat stub_x32_execveat | ||
diff --git a/arch/x86/um/sys_call_table_64.c b/arch/x86/um/sys_call_table_64.c index f2f0723070ca..20c3649d0691 100644 --- a/arch/x86/um/sys_call_table_64.c +++ b/arch/x86/um/sys_call_table_64.c | |||
@@ -31,6 +31,7 @@ | |||
31 | #define stub_fork sys_fork | 31 | #define stub_fork sys_fork |
32 | #define stub_vfork sys_vfork | 32 | #define stub_vfork sys_vfork |
33 | #define stub_execve sys_execve | 33 | #define stub_execve sys_execve |
34 | #define stub_execveat sys_execveat | ||
34 | #define stub_rt_sigreturn sys_rt_sigreturn | 35 | #define stub_rt_sigreturn sys_rt_sigreturn |
35 | 36 | ||
36 | #define __SYSCALL_COMMON(nr, sym, compat) __SYSCALL_64(nr, sym, compat) | 37 | #define __SYSCALL_COMMON(nr, sym, compat) __SYSCALL_64(nr, sym, compat) |