Refresh patches

This commit is contained in:
Aleksey Samoilov 2024-06-15 00:10:45 +04:00
parent 76157e76b1
commit 60e35759c4
Signed by: Sunderland93
GPG key ID: D3E730685C28F1FB

View file

@ -29,23 +29,23 @@ Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
--- a/Documentation/admin-guide/kernel-parameters.txt --- a/Documentation/admin-guide/kernel-parameters.txt
+++ b/Documentation/admin-guide/kernel-parameters.txt +++ b/Documentation/admin-guide/kernel-parameters.txt
@@ -6172,6 +6172,10 @@ @@ -5768,6 +5768,10 @@
later by a loaded module cannot be set this way. later by a loaded module cannot be set this way.
Example: sysctl.vm.swappiness=40 Example: sysctl.vm.swappiness=40
+ syscall.x32= [KNL,x86_64] Enable/disable use of x32 syscalls on + syscall.x32= [KNL,x86_64] Enable/disable use of x32 syscalls on
+ an x86_64 kernel where CONFIG_X86_X32 is enabled. + an x86_64 kernel where CONFIG_X86_X32 is enabled.
+ Default depends on CONFIG_X86_X32_DISABLED. + Default depends on CONFIG_X86_X32_DISABLED.
+ +
sysrq_always_enabled sysfs.deprecated=0|1 [KNL]
[KNL] Enable/disable old style sysfs layout for old udev
Ignore sysrq setting - this boot parameter will on older distributions. When this option is enabled
--- a/arch/x86/Kconfig --- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig +++ b/arch/x86/Kconfig
@@ -3058,6 +3058,14 @@ config COMPAT_32 @@ -2865,6 +2865,14 @@ config COMPAT_32
select HAVE_UID16 select HAVE_UID16
select OLD_SIGSUSPEND3 select OLD_SIGSUSPEND3
+config X86_X32_DISABLED +config X86_X32_DISABLED
+ bool "x32 ABI disabled by default" + bool "x32 ABI disabled by default"
+ depends on X86_X32_ABI + depends on X86_X32_ABI
@ -62,7 +62,7 @@ Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
@@ -62,7 +62,7 @@ static __always_inline bool do_syscall_x @@ -62,7 +62,7 @@ static __always_inline bool do_syscall_x
*/ */
unsigned int xnr = nr - __X32_SYSCALL_BIT; unsigned int xnr = nr - __X32_SYSCALL_BIT;
- if (IS_ENABLED(CONFIG_X86_X32_ABI) && likely(xnr < X32_NR_syscalls)) { - if (IS_ENABLED(CONFIG_X86_X32_ABI) && likely(xnr < X32_NR_syscalls)) {
+ if (IS_ENABLED(CONFIG_X86_X32_ABI) && unlikely(x32_enabled) && likely(xnr < X32_NR_syscalls)) { + if (IS_ENABLED(CONFIG_X86_X32_ABI) && unlikely(x32_enabled) && likely(xnr < X32_NR_syscalls)) {
xnr = array_index_nospec(xnr, X32_NR_syscalls); xnr = array_index_nospec(xnr, X32_NR_syscalls);
@ -79,7 +79,7 @@ Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
+#define MODULE_PARAM_PREFIX "syscall." +#define MODULE_PARAM_PREFIX "syscall."
#include <linux/syscalls.h> #include <linux/syscalls.h>
#include <asm/syscall.h> #include <asm/syscall.h>
@@ -16,3 +19,46 @@ @@ -16,3 +19,46 @@
asmlinkage const sys_call_ptr_t x32_sys_call_table[] = { asmlinkage const sys_call_ptr_t x32_sys_call_table[] = {
#include <asm/syscalls_x32.h> #include <asm/syscalls_x32.h>
@ -136,19 +136,19 @@ Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
+#ifndef COMPILE_OFFSETS /* avoid a circular dependency on asm-offsets.h */ +#ifndef COMPILE_OFFSETS /* avoid a circular dependency on asm-offsets.h */
+#include <asm/syscall.h> +#include <asm/syscall.h>
+#endif +#endif
typedef unsigned long elf_greg_t; typedef unsigned long elf_greg_t;
@@ -150,7 +153,8 @@ do { \ @@ -161,7 +164,8 @@ do { \
#define compat_elf_check_arch(x) \ #define compat_elf_check_arch(x) \
(elf_check_arch_ia32(x) || \ (elf_check_arch_ia32(x) || \
- (IS_ENABLED(CONFIG_X86_X32_ABI) && (x)->e_machine == EM_X86_64)) - (IS_ENABLED(CONFIG_X86_X32_ABI) && (x)->e_machine == EM_X86_64))
+ (IS_ENABLED(CONFIG_X86_X32_ABI) && x32_enabled && \ + (IS_ENABLED(CONFIG_X86_X32_ABI) && x32_enabled && \
+ (x)->e_machine == EM_X86_64)) + (x)->e_machine == EM_X86_64))
static inline void elf_common_init(struct thread_struct *t, #if __USER32_DS != __USER_DS
struct pt_regs *regs, const u16 ds) # error "The following code assumes __USER32_DS == __USER_DS"
--- a/arch/x86/include/asm/syscall.h --- a/arch/x86/include/asm/syscall.h
+++ b/arch/x86/include/asm/syscall.h +++ b/arch/x86/include/asm/syscall.h
@@ -13,6 +13,7 @@ @@ -13,6 +13,7 @@
@ -158,11 +158,11 @@ Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
+#include <linux/jump_label.h> +#include <linux/jump_label.h>
#include <asm/thread_info.h> /* for TS_COMPAT */ #include <asm/thread_info.h> /* for TS_COMPAT */
#include <asm/unistd.h> #include <asm/unistd.h>
@@ -30,6 +31,18 @@ extern const sys_call_ptr_t ia32_sys_cal @@ -30,6 +31,18 @@ extern const sys_call_ptr_t ia32_sys_cal
extern const sys_call_ptr_t x32_sys_call_table[]; extern const sys_call_ptr_t x32_sys_call_table[];
#endif #endif
+#if defined(CONFIG_X86_X32_ABI) +#if defined(CONFIG_X86_X32_ABI)
+#if defined(CONFIG_X86_X32_DISABLED) +#if defined(CONFIG_X86_X32_DISABLED)
+DECLARE_STATIC_KEY_FALSE(x32_enabled_skey); +DECLARE_STATIC_KEY_FALSE(x32_enabled_skey);