Update to 6.15-rc6

This commit is contained in:
Bastian Blank 2025-05-14 20:14:01 +00:00
parent a52ec74d06
commit ec9d200702
22 changed files with 117 additions and 222 deletions

7
debian/changelog vendored
View file

@ -1,4 +1,6 @@
linux (6.14.6-1~exp2) UNRELEASED; urgency=medium
linux (6.15~rc6-1~exp1) UNRELEASED; urgency=medium
* New upstream release candidate.
[ Salvatore Bonaccorso ]
* [riscv64] drivers/thermal: Enable SUN8I_THERMAL as module (Closes: #1105002)
@ -6,6 +8,9 @@ linux (6.14.6-1~exp2) UNRELEASED; urgency=medium
[ Aurelien Jarno ]
* [riscv64] Enable BT_HCIUART (Closes: #1105002)
[ Bastian Blank ]
* Add missing MODULE_DESCRIPTION definition to our autopkgtest module.
-- Salvatore Bonaccorso <carnil@debian.org> Fri, 09 May 2025 22:20:51 +0200
linux (6.14.6-1~exp1) experimental; urgency=medium

View file

@ -159,17 +159,13 @@ CONFIG_EISA_NAMES=y
##
CONFIG_DRM=m
##
## file: drivers/gpu/drm/i2c/Kconfig
##
CONFIG_DRM_I2C_CH7006=m
CONFIG_DRM_I2C_SIL164=m
##
## file: drivers/gpu/drm/nouveau/Kconfig
##
CONFIG_DRM_NOUVEAU=m
# CONFIG_DRM_NOUVEAU_BACKLIGHT is not set
CONFIG_DRM_NOUVEAU_CH7006=m
CONFIG_DRM_NOUVEAU_SIL164=m
##
## file: drivers/gpu/drm/radeon/Kconfig
@ -416,7 +412,6 @@ CONFIG_MTD_REDBOOT_PARTS_READONLY=y
## file: drivers/net/Kconfig
##
CONFIG_NET_FC=y
CONFIG_NET_SB1000=m
##
## file: drivers/net/arcnet/Kconfig
@ -781,12 +776,6 @@ CONFIG_USELIB=y
# CONFIG_AUDIT is not set
CONFIG_SYSFS_SYSCALL=y
##
## file: lib/Kconfig
##
#. TODO
CONFIG_CRC32=m
##
## file: lib/Kconfig.ubsan
##

View file

@ -32,17 +32,6 @@ CONFIG_ISA_DMA_API=y
CONFIG_X86_X32_ABI=y
CONFIG_X86_X32_DISABLED=y
##
## file: arch/x86/Kconfig.cpu
##
## choice: Processor family
# CONFIG_MK8 is not set
# CONFIG_MPSC is not set
# CONFIG_MCORE2 is not set
# CONFIG_MATOM is not set
CONFIG_GENERIC_CPU=y
## end choice
##
## file: arch/x86/crypto/Kconfig
##

View file

@ -409,6 +409,7 @@ CONFIG_DRM_ASPEED_GFX=m
## file: drivers/gpu/drm/bridge/Kconfig
##
CONFIG_DRM_DISPLAY_CONNECTOR=m
CONFIG_DRM_I2C_NXP_TDA998X=m
CONFIG_DRM_SII902X=m
CONFIG_DRM_TI_TPD12S015=m
@ -434,11 +435,6 @@ CONFIG_DRM_EXYNOS_DSI=y
CONFIG_DRM_EXYNOS_DP=y
CONFIG_DRM_EXYNOS_HDMI=y
##
## file: drivers/gpu/drm/i2c/Kconfig
##
CONFIG_DRM_I2C_NXP_TDA998X=m
##
## file: drivers/gpu/drm/imx/ipuv3/Kconfig
##

38
debian/config/config vendored
View file

@ -138,7 +138,6 @@ CONFIG_CRYPTO_WP512=m
CONFIG_CRYPTO_XCBC=m
CONFIG_CRYPTO_CRC32C=m
CONFIG_CRYPTO_CRC32=m
CONFIG_CRYPTO_CRCT10DIF=m
CONFIG_CRYPTO_DEFLATE=m
CONFIG_CRYPTO_LZO=m
# CONFIG_CRYPTO_842 is not set
@ -748,6 +747,7 @@ CONFIG_DRM_AMD_DC_SI=y
##
## file: drivers/gpu/drm/bridge/Kconfig
##
# CONFIG_DRM_I2C_NXP_TDA998X is not set
# CONFIG_DRM_NXP_PTN3460 is not set
# CONFIG_DRM_PARADE_PS8622 is not set
@ -778,14 +778,6 @@ CONFIG_DRM_DISPLAY_DP_AUX_CHARDEV=y
##
# CONFIG_DRM_HISI_HIBMC is not set
##
## file: drivers/gpu/drm/i2c/Kconfig
##
# CONFIG_DRM_I2C_CH7006 is not set
# CONFIG_DRM_I2C_SIL164 is not set
# CONFIG_DRM_I2C_NXP_TDA998X is not set
# CONFIG_DRM_I2C_NXP_TDA9950 is not set
##
## file: drivers/gpu/drm/i915/Kconfig
##
@ -2817,9 +2809,6 @@ CONFIG_LPC_SCH=m
# CONFIG_EZX_PCAP is not set
CONFIG_MFD_VIPERBOARD=m
# CONFIG_MFD_RETU is not set
# CONFIG_MFD_PCF50633 is not set
CONFIG_PCF50633_ADC=m
CONFIG_PCF50633_GPIO=m
# CONFIG_MFD_RDC321X is not set
# CONFIG_MFD_RT5033 is not set
# CONFIG_MFD_RC5T583 is not set
@ -4576,7 +4565,6 @@ CONFIG_BATTERY_BQ27XXX_HDQ=m
# CONFIG_BATTERY_MAX17040 is not set
# CONFIG_BATTERY_MAX17042 is not set
# CONFIG_BATTERY_MAX1721X is not set
CONFIG_CHARGER_PCF50633=m
# CONFIG_CHARGER_ISP1704 is not set
# CONFIG_CHARGER_MAX8903 is not set
# CONFIG_CHARGER_LP8727 is not set
@ -4744,7 +4732,6 @@ CONFIG_RTC_DRV_CMOS=m
# CONFIG_RTC_DRV_RP5C01 is not set
CONFIG_RTC_DRV_WM831X=m
CONFIG_RTC_DRV_WM8350=m
CONFIG_RTC_DRV_PCF50633=m
# CONFIG_RTC_DRV_ZYNQMP is not set
# CONFIG_RTC_DRV_SNVS is not set
# CONFIG_RTC_DRV_MOXART is not set
@ -5010,7 +4997,6 @@ CONFIG_STAGING=y
## file: drivers/staging/iio/accel/Kconfig
##
# CONFIG_ADIS16203 is not set
# CONFIG_ADIS16240 is not set
##
## file: drivers/staging/iio/adc/Kconfig
@ -6241,11 +6227,6 @@ CONFIG_SQUASHFS_ZSTD=y
##
CONFIG_SYSFS=y
##
## file: fs/sysv/Kconfig
##
CONFIG_SYSV_FS=m
##
## file: fs/ubifs/Kconfig
##
@ -6361,11 +6342,11 @@ CONFIG_BLK_DEV_INITRD=y
CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
## end choice
# CONFIG_SYSFS_SYSCALL is not set
#. Unfortunately some useful options are conditional on EXPERT
CONFIG_EXPERT=y
CONFIG_UID16=y
CONFIG_MULTIUSER=y
# CONFIG_SYSFS_SYSCALL is not set
CONFIG_FHANDLE=y
CONFIG_POSIX_TIMERS=y
CONFIG_PRINTK=y
@ -6542,14 +6523,6 @@ CONFIG_HIST_TRIGGERS=y
##
## file: lib/Kconfig
##
CONFIG_CRC_CCITT=m
CONFIG_CRC16=m
CONFIG_CRC_T10DIF=m
CONFIG_CRC_ITU_T=m
CONFIG_CRC32=y
CONFIG_CRC7=m
CONFIG_LIBCRC32C=m
# CONFIG_CRC8 is not set
# CONFIG_RANDOM32_SELFTEST is not set
# CONFIG_GLOB_SELFTEST is not set
@ -6593,7 +6566,6 @@ CONFIG_HARDLOCKUP_DETECTOR=y
CONFIG_DETECT_HUNG_TASK=y
CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=120
# CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set
CONFIG_SCHED_DEBUG=y
CONFIG_SCHEDSTATS=y
# CONFIG_PROVE_LOCKING is not set
# CONFIG_LOCK_STAT is not set
@ -6635,7 +6607,6 @@ CONFIG_PM_NOTIFIER_ERROR_INJECT=m
# CONFIG_TEST_HEXDUMP is not set
# CONFIG_STRING_HELPERS_KUNIT_TEST is not set
# CONFIG_TEST_KSTRTOX is not set
# CONFIG_TEST_PRINTF is not set
# CONFIG_TEST_BITMAP is not set
# CONFIG_TEST_UUID is not set
# CONFIG_TEST_RHASHTABLE is not set
@ -6712,7 +6683,6 @@ CONFIG_CORDIC=m
##
CONFIG_SWAP=y
CONFIG_ZSWAP=y
CONFIG_ZBUD=y
CONFIG_ZSMALLOC=m
# CONFIG_ZSMALLOC_STAT is not set
CONFIG_SLAB_MERGE_DEFAULT=y
@ -7685,8 +7655,6 @@ CONFIG_SECURITY_NETWORK_XFRM=y
CONFIG_SECURITY_PATH=y
# CONFIG_INTEL_TXT is not set
CONFIG_LSM_MMAP_MIN_ADDR=32768
CONFIG_HARDENED_USERCOPY=y
CONFIG_FORTIFY_SOURCE=y
## choice: First legacy 'major LSM' to be initialized
CONFIG_DEFAULT_SECURITY_APPARMOR=y
## end choice
@ -7696,6 +7664,8 @@ CONFIG_LSM="landlock,lockdown,yama,loadpin,safesetid,integrity,apparmor,selinux,
## file: security/Kconfig.hardening
##
CONFIG_INIT_ON_ALLOC_DEFAULT_ON=y
CONFIG_FORTIFY_SOURCE=y
CONFIG_HARDENED_USERCOPY=y
CONFIG_BUG_ON_DATA_CORRUPTION=y
##

View file

@ -561,7 +561,6 @@ CONFIG_HYPERV_KEYBOARD=m
## file: drivers/net/Kconfig
##
# CONFIG_GTP is not set
# CONFIG_NET_SB1000 is not set
CONFIG_XEN_NETDEV_FRONTEND=m
# CONFIG_FUJITSU_ES is not set
@ -1058,7 +1057,6 @@ CONFIG_NVME_MULTIPATH=y
# CONFIG_RTC_DRV_RP5C01 is not set
# CONFIG_RTC_DRV_WM831X is not set
# CONFIG_RTC_DRV_WM8350 is not set
# CONFIG_RTC_DRV_PCF50633 is not set
# CONFIG_RTC_DRV_ZYNQMP is not set
# CONFIG_RTC_DRV_SNVS is not set
# CONFIG_RTC_DRV_MOXART is not set

View file

@ -490,8 +490,8 @@ CONFIG_ROOT_NFS=y
##
## file: init/Kconfig
##
CONFIG_SGETMASK_SYSCALL=y
CONFIG_SYSFS_SYSCALL=y
CONFIG_SGETMASK_SYSCALL=y
##
## file: lib/Kconfig.debug

View file

@ -134,8 +134,8 @@ CONFIG_USB_OHCI_HCD=m
##
## file: init/Kconfig
##
CONFIG_SGETMASK_SYSCALL=y
CONFIG_SYSFS_SYSCALL=y
CONFIG_SGETMASK_SYSCALL=y
##
## file: kernel/Kconfig.kexec

View file

@ -179,17 +179,13 @@ CONFIG_CPU_FREQ_PMAC=y
##
CONFIG_DRM=m
##
## file: drivers/gpu/drm/i2c/Kconfig
##
CONFIG_DRM_I2C_CH7006=m
CONFIG_DRM_I2C_SIL164=m
##
## file: drivers/gpu/drm/nouveau/Kconfig
##
CONFIG_DRM_NOUVEAU=m
CONFIG_DRM_NOUVEAU_BACKLIGHT=y
CONFIG_DRM_NOUVEAU_CH7006=m
CONFIG_DRM_NOUVEAU_SIL164=m
##
## file: drivers/gpu/drm/radeon/Kconfig

View file

@ -7,10 +7,7 @@ CONFIG_CMDLINE="console=hvsi0 console=hvc0 console=ttyS0,9600 console=tty0"
##
## file: arch/powerpc/platforms/cell/Kconfig
##
CONFIG_PPC_IBM_CELL_BLADE=y
CONFIG_SPU_FS=m
CONFIG_CBE_RAS=y
CONFIG_CBE_THERM=m
##
## file: arch/powerpc/platforms/pasemi/Kconfig
@ -47,7 +44,6 @@ CONFIG_HW_RANDOM_PASEMI=m
##
## file: drivers/cpufreq/Kconfig.powerpc
##
CONFIG_CPU_FREQ_CBE=m
CONFIG_CPU_FREQ_PMAC64=y
#. It's a bool
CONFIG_PPC_PASEMI_CPUFREQ=y
@ -82,7 +78,6 @@ CONFIG_PASEMI_MAC=m
##
CONFIG_GELIC_NET=m
CONFIG_GELIC_WIRELESS=y
CONFIG_SPIDER_NET=m
##
## file: drivers/rtc/Kconfig

View file

@ -75,17 +75,13 @@ CONFIG_HW_RANDOM_N2RNG=m
##
CONFIG_DRM=m
##
## file: drivers/gpu/drm/i2c/Kconfig
##
CONFIG_DRM_I2C_CH7006=m
CONFIG_DRM_I2C_SIL164=m
##
## file: drivers/gpu/drm/nouveau/Kconfig
##
CONFIG_DRM_NOUVEAU=m
# CONFIG_DRM_NOUVEAU_BACKLIGHT is not set
CONFIG_DRM_NOUVEAU_CH7006=m
CONFIG_DRM_NOUVEAU_SIL164=m
##
## file: drivers/gpu/drm/radeon/Kconfig
@ -502,8 +498,8 @@ CONFIG_FB_MODE_HELPERS=y
##
## file: init/Kconfig
##
CONFIG_SGETMASK_SYSCALL=y
CONFIG_SYSFS_SYSCALL=y
CONFIG_SGETMASK_SYSCALL=y
##
## file: lib/xz/Kconfig

View file

@ -168,7 +168,7 @@ CONFIG_ACPI_PCI_SLOT=y
CONFIG_ACPI_CONTAINER=y
CONFIG_ACPI_HOTPLUG_MEMORY=y
CONFIG_ACPI_SBS=m
CONFIG_ACPI_HED=m
CONFIG_ACPI_HED=y
CONFIG_ACPI_EXTLOG=y
CONFIG_X86_PM_TIMER=y
@ -592,12 +592,6 @@ CONFIG_DRM_DISPLAY_DP_AUX_CEC=y
##
CONFIG_DRM_GMA500=m
##
## file: drivers/gpu/drm/i2c/Kconfig
##
CONFIG_DRM_I2C_CH7006=m
CONFIG_DRM_I2C_SIL164=m
##
## file: drivers/gpu/drm/i915/Kconfig
##
@ -613,6 +607,8 @@ CONFIG_DRM_MGAG200=m
##
CONFIG_DRM_NOUVEAU=m
CONFIG_DRM_NOUVEAU_BACKLIGHT=y
CONFIG_DRM_NOUVEAU_CH7006=m
CONFIG_DRM_NOUVEAU_SIL164=m
##
## file: drivers/gpu/drm/radeon/Kconfig
@ -908,7 +904,7 @@ CONFIG_LEDS_CLEVO_MAIL=m
CONFIG_LEDS_MENF21BMC=m
##
## file: drivers/leds/simple/Kconfig
## file: drivers/leds/simatic/Kconfig
##
CONFIG_LEDS_SIEMENS_SIMATIC_IPC=m
@ -1161,7 +1157,6 @@ CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1
##
CONFIG_DUMMY=m
CONFIG_NET_FC=y
CONFIG_NET_SB1000=m
CONFIG_VMXNET3=m
##
@ -2007,8 +2002,8 @@ CONFIG_VBOXSF_FS=m
##
CONFIG_USELIB=y
# CONFIG_IRQ_TIME_ACCOUNTING is not set
CONFIG_SGETMASK_SYSCALL=y
CONFIG_SYSFS_SYSCALL=y
CONFIG_SGETMASK_SYSCALL=y
##
## file: kernel/Kconfig.kexec

View file

@ -689,8 +689,8 @@ CONFIG_LOG_BUF_SHIFT=16
## choice: Compiler optimization level
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
## end choice
CONFIG_SGETMASK_SYSCALL=y
CONFIG_SYSFS_SYSCALL=y
CONFIG_SGETMASK_SYSCALL=y
##
## file: kernel/module/Kconfig
@ -713,7 +713,6 @@ CONFIG_HZ_PERIODIC=y
##
# CONFIG_FRAME_POINTER is not set
# CONFIG_DEBUG_FS is not set
# CONFIG_SCHED_DEBUG is not set
##
## file: lib/Kconfig.ubsan

View file

@ -149,7 +149,6 @@ CONFIG_S390_VMUR=m
##
## file: drivers/s390/net/Kconfig
##
CONFIG_LCS=m
CONFIG_CTCM=m
CONFIG_NETIUCV=m
CONFIG_SMSGIUCV=y

View file

@ -1,32 +0,0 @@
From: Ben Hutchings <benh@debian.org>
Date: Mon, 16 Sep 2024 00:07:04 +0200
Subject: Documentation: Use relative source filenames in ABI documentation
Currently the ABI documentation files contain absolute source
filenames, which makes them unreproducible if the build directory can
vary.
Remove the source base directory ($srctree) from the source filenames
shown in the documentation.
Signed-off-by: Ben Hutchings <benh@debian.org>
---
--- a/Documentation/sphinx/kernel_abi.py
+++ b/Documentation/sphinx/kernel_abi.py
@@ -103,6 +103,7 @@ class KernelCmd(Directive):
lines = code_block + "\n\n"
line_regex = re.compile(r"^\.\. LINENO (\S+)\#([0-9]+)$")
+ srctree = os.path.abspath(os.environ["srctree"])
ln = 0
n = 0
f = fname
@@ -127,7 +128,7 @@ class KernelCmd(Directive):
# sphinx counts lines from 0
ln = int(match.group(2)) - 1
else:
- content.append(line, f, ln)
+ content.append(line, os.path.relpath(f, srctree), ln)
kernellog.info(self.state.document.settings.env.app, "%s: parsed %i lines" % (fname, n))

View file

@ -21,7 +21,7 @@ Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
+ * much older kernel. Do "use" the attr structure here to avoid
+ * a "set but not used" warning.
*/
- return syscall(__NR_bpf, BPF_PROG_LOAD, &attr, sizeof(attr));
- return syscall(__NR_bpf, BPF_PROG_LOAD, &attr, sizeof(attr)) == 0;
+ (void)&attr;
+ return 0;
}

View file

@ -60,18 +60,18 @@ Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
goto bad_unshare_out;
--- a/kernel/sysctl.c
+++ b/kernel/sysctl.c
@@ -135,6 +135,10 @@ static enum sysctl_writes_mode sysctl_wr
int sysctl_legacy_va_layout;
#endif
@@ -84,6 +84,10 @@
static const int ngroups_max = NGROUPS_MAX;
static const int cap_last_cap = CAP_LAST_CAP;
+#ifdef CONFIG_USER_NS
+extern int unprivileged_userns_clone;
+#endif
+
#endif /* CONFIG_SYSCTL */
#ifdef CONFIG_PROC_SYSCTL
/*
@@ -1618,6 +1622,15 @@ static struct ctl_table kern_table[] = {
/**
@@ -1595,6 +1599,15 @@
.mode = 0644,
.proc_handler = proc_dointvec,
},

View file

@ -134,8 +134,8 @@ are set.
*/
void dump_stack_print_info(const char *log_lvl)
{
- printk("%sCPU: %d UID: %u PID: %d Comm: %.20s %s%s %s %.*s" BUILD_ID_FMT "\n",
+ printk("%sCPU: %d UID: %u PID: %d Comm: %.20s %s%s %s %.*s %s" BUILD_ID_FMT "\n",
- printk("%sCPU: %d UID: %u PID: %d Comm: %.20s %s%s %s %.*s %s " BUILD_ID_FMT "\n",
+ printk("%sCPU: %d UID: %u PID: %d Comm: %.20s %s%s %s %.*s %s %s " BUILD_ID_FMT "\n",
log_lvl, raw_smp_processor_id(),
__kuid_val(current_real_cred()->euid),
current->pid, current->comm,
@ -143,8 +143,8 @@ are set.
print_tainted(),
init_utsname()->release,
(int)strcspn(init_utsname()->version, " "),
- init_utsname()->version, BUILD_ID_VAL);
+ init_utsname()->version,
- init_utsname()->version, preempt_model_str(), BUILD_ID_VAL);
+ init_utsname()->version, preempt_model_str(),
+ LINUX_PACKAGE_ID,
+ BUILD_ID_VAL);

View file

@ -22,9 +22,9 @@ Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
--- a/include/linux/perf_event.h
+++ b/include/linux/perf_event.h
@@ -1617,6 +1617,11 @@ int perf_cpu_time_max_percent_handler(co
int perf_event_max_stack_handler(const struct ctl_table *table, int write,
void *buffer, size_t *lenp, loff_t *ppos);
@@ -1684,6 +1684,11 @@
extern void perf_sample_event_took(u64 sample_len_ns);
+static inline bool perf_paranoid_any(void)
+{
@ -48,9 +48,9 @@ Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
int sysctl_perf_event_paranoid __read_mostly = 2;
+#endif
/* Minimum for 512 kiB + 1 user control page */
int sysctl_perf_event_mlock __read_mostly = 512 + (PAGE_SIZE / 1024); /* 'free' kiB per user */
@@ -12681,6 +12686,9 @@ SYSCALL_DEFINE5(perf_event_open,
/* Minimum for 512 kiB + 1 user control page. 'free' kiB per user. */
static int sysctl_perf_event_mlock __read_mostly = 512 + (PAGE_SIZE / 1024);
@@ -13084,6 +13089,9 @@
if (err)
return err;
@ -58,13 +58,13 @@ Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
+ return -EACCES;
+
/* Do we allow access to perf_event_open(2) ? */
err = security_perf_event_open(&attr, PERF_SECURITY_OPEN);
err = security_perf_event_open(PERF_SECURITY_OPEN);
if (err)
--- a/security/Kconfig
+++ b/security/Kconfig
@@ -51,6 +51,15 @@ config PROC_MEM_NO_FORCE
endchoice
@@ -81,6 +81,15 @@
For complete descriptions of memory sealing, please see
Documentation/userspace-api/mseal.rst
+config SECURITY_PERF_EVENTS_RESTRICT
+ bool "Restrict unprivileged use of performance events"

View file

@ -57,9 +57,70 @@ Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
config COMPAT
def_bool y
depends on IA32_EMULATION || X86_X32_ABI
--- a/arch/x86/entry/common.c
+++ b/arch/x86/entry/common.c
@@ -64,7 +64,7 @@ static __always_inline bool do_syscall_x
--- a/arch/x86/include/asm/elf.h
+++ b/arch/x86/include/asm/elf.h
@@ -12,6 +12,9 @@
#include <asm/user.h>
#include <asm/auxvec.h>
#include <asm/fsgsbase.h>
+#ifndef COMPILE_OFFSETS /* avoid a circular dependency on asm-offsets.h */
+#include <asm/syscall.h>
+#endif
typedef unsigned long elf_greg_t;
@@ -152,7 +155,8 @@
#define compat_elf_check_arch(x) \
((elf_check_arch_ia32(x) && ia32_enabled_verbose()) || \
- (IS_ENABLED(CONFIG_X86_X32_ABI) && (x)->e_machine == EM_X86_64))
+ (IS_ENABLED(CONFIG_X86_X32_ABI) && x32_enabled && \
+ (x)->e_machine == EM_X86_64))
static inline void elf_common_init(struct thread_struct *t,
struct pt_regs *regs, const u16 ds)
--- a/arch/x86/include/asm/syscall.h
+++ b/arch/x86/include/asm/syscall.h
@@ -13,6 +13,7 @@
#include <uapi/linux/audit.h>
#include <linux/sched.h>
#include <linux/err.h>
+#include <linux/jump_label.h>
#include <asm/thread_info.h> /* for TS_COMPAT */
#include <asm/unistd.h>
@@ -28,6 +29,18 @@
extern long x32_sys_call(const struct pt_regs *, unsigned int nr);
extern long x64_sys_call(const struct pt_regs *, unsigned int nr);
+#if defined(CONFIG_X86_X32_ABI)
+#if defined(CONFIG_X86_X32_DISABLED)
+DECLARE_STATIC_KEY_FALSE(x32_enabled_skey);
+#define x32_enabled static_branch_unlikely(&x32_enabled_skey)
+#else
+DECLARE_STATIC_KEY_TRUE(x32_enabled_skey);
+#define x32_enabled static_branch_likely(&x32_enabled_skey)
+#endif
+#else
+#define x32_enabled 0
+#endif
+
/*
* Only the low 32 bits of orig_ax are meaningful, so we return int.
* This importantly ignores the high bits on 64-bit, so comparisons
--- a/arch/x86/entry/syscall_64.c
+++ b/arch/x86/entry/syscall_64.c
@@ -7,6 +7,9 @@
#include <linux/syscalls.h>
#include <linux/entry-common.h>
#include <linux/nospec.h>
+#include <linux/moduleparam.h>
+#undef MODULE_PARAM_PREFIX
+#define MODULE_PARAM_PREFIX "syscall."
#include <asm/syscall.h>
#define __SYSCALL(nr, sym) extern long __x64_##sym(const struct pt_regs *);
@@ -75,7 +78,7 @@
*/
unsigned int xnr = nr - __X32_SYSCALL_BIT;
@ -68,23 +129,12 @@ Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
xnr = array_index_nospec(xnr, X32_NR_syscalls);
regs->ax = x32_sys_call(regs, xnr);
return true;
--- a/arch/x86/entry/syscall_x32.c
+++ b/arch/x86/entry/syscall_x32.c
@@ -4,6 +4,9 @@
#include <linux/linkage.h>
#include <linux/sys.h>
#include <linux/cache.h>
+#include <linux/moduleparam.h>
+#undef MODULE_PARAM_PREFIX
+#define MODULE_PARAM_PREFIX "syscall."
#include <linux/syscalls.h>
#include <asm/syscall.h>
@@ -20,3 +23,46 @@
default: return __x64_sys_ni_syscall(regs);
}
};
@@ -139,3 +142,48 @@
/* Use SYSRET to exit to userspace */
return true;
}
+
+#ifdef CONFIG_X86_X32_ABI
+/* Maybe enable x32 syscalls */
+
+#if defined(CONFIG_X86_X32_DISABLED)
@ -127,54 +177,4 @@ Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
+};
+
+arch_param_cb(x32, &x32_param_ops, NULL, 0444);
--- a/arch/x86/include/asm/elf.h
+++ b/arch/x86/include/asm/elf.h
@@ -12,6 +12,9 @@
#include <asm/user.h>
#include <asm/auxvec.h>
#include <asm/fsgsbase.h>
+#ifndef COMPILE_OFFSETS /* avoid a circular dependency on asm-offsets.h */
+#include <asm/syscall.h>
+#endif
typedef unsigned long elf_greg_t;
@@ -151,7 +154,8 @@ do { \
#define compat_elf_check_arch(x) \
((elf_check_arch_ia32(x) && ia32_enabled_verbose()) || \
- (IS_ENABLED(CONFIG_X86_X32_ABI) && (x)->e_machine == EM_X86_64))
+ (IS_ENABLED(CONFIG_X86_X32_ABI) && x32_enabled && \
+ (x)->e_machine == EM_X86_64))
static inline void elf_common_init(struct thread_struct *t,
struct pt_regs *regs, const u16 ds)
--- a/arch/x86/include/asm/syscall.h
+++ b/arch/x86/include/asm/syscall.h
@@ -13,6 +13,7 @@
#include <uapi/linux/audit.h>
#include <linux/sched.h>
#include <linux/err.h>
+#include <linux/jump_label.h>
#include <asm/thread_info.h> /* for TS_COMPAT */
#include <asm/unistd.h>
@@ -28,6 +29,18 @@ extern const sys_call_ptr_t ia32_sys_cal
extern long x32_sys_call(const struct pt_regs *, unsigned int nr);
extern long x64_sys_call(const struct pt_regs *, unsigned int nr);
+#if defined(CONFIG_X86_X32_ABI)
+#if defined(CONFIG_X86_X32_DISABLED)
+DECLARE_STATIC_KEY_FALSE(x32_enabled_skey);
+#define x32_enabled static_branch_unlikely(&x32_enabled_skey)
+#else
+DECLARE_STATIC_KEY_TRUE(x32_enabled_skey);
+#define x32_enabled static_branch_likely(&x32_enabled_skey)
+#endif
+#else
+#define x32_enabled 0
+#endif
+
/*
* Only the low 32 bits of orig_ax are meaningful, so we return int.
* This importantly ignores the high bits on 64-bit, so comparisons

View file

@ -72,7 +72,6 @@ features/x86/x86-make-x32-syscall-support-conditional.patch
# Miscellaneous bug fixes
bugfix/all/disable-some-marvell-phys.patch
bugfix/all/fs-add-module_softdep-declarations-for-hard-coded-cr.patch
bugfix/all/documentation-use-relative-source-paths-in-abi-documentation.patch
# Miscellaneous features

View file

@ -20,6 +20,7 @@ static void __exit foo_exit(void)
module_exit(foo_exit);
MODULE_LICENSE("GPL");
MODULE_DESCRIPTION("");
EOF
cat >"$AUTOPKGTEST_TMP"/foo/Kbuild <<EOF
obj-m += foo.o