for build kernel-4.14.24
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
#
|
||||
# Automatically generated file; DO NOT EDIT.
|
||||
# Linux/x86_64 4.14.23 Kernel Configuration
|
||||
# Linux/x86_64 4.14.24 Kernel Configuration
|
||||
#
|
||||
CONFIG_64BIT=y
|
||||
CONFIG_X86_64=y
|
||||
@@ -75,7 +75,7 @@ CONFIG_POSIX_MQUEUE=y
|
||||
CONFIG_POSIX_MQUEUE_SYSCTL=y
|
||||
CONFIG_CROSS_MEMORY_ATTACH=y
|
||||
CONFIG_FHANDLE=y
|
||||
CONFIG_USELIB=y
|
||||
# CONFIG_USELIB is not set
|
||||
CONFIG_AUDIT=y
|
||||
CONFIG_HAVE_ARCH_AUDITSYSCALL=y
|
||||
CONFIG_AUDITSYSCALL=y
|
||||
@@ -146,8 +146,8 @@ CONFIG_RCU_NEED_SEGCBLIST=y
|
||||
CONFIG_BUILD_BIN2C=y
|
||||
CONFIG_IKCONFIG=y
|
||||
CONFIG_IKCONFIG_PROC=y
|
||||
CONFIG_LOG_BUF_SHIFT=17
|
||||
CONFIG_LOG_CPU_MAX_BUF_SHIFT=13
|
||||
CONFIG_LOG_BUF_SHIFT=18
|
||||
CONFIG_LOG_CPU_MAX_BUF_SHIFT=12
|
||||
CONFIG_PRINTK_SAFE_LOG_BUF_SHIFT=13
|
||||
CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y
|
||||
CONFIG_ARCH_SUPPORTS_NUMA_BALANCING=y
|
||||
@@ -175,7 +175,6 @@ CONFIG_PROC_PID_CPUSET=y
|
||||
CONFIG_CGROUP_DEVICE=y
|
||||
CONFIG_CGROUP_CPUACCT=y
|
||||
CONFIG_CGROUP_PERF=y
|
||||
# CONFIG_CGROUP_BPF is not set
|
||||
CONFIG_SOCK_CGROUP_DATA=y
|
||||
# CONFIG_CHECKPOINT_RESTORE is not set
|
||||
CONFIG_NAMESPACES=y
|
||||
@@ -193,8 +192,8 @@ CONFIG_RD_GZIP=y
|
||||
CONFIG_RD_BZIP2=y
|
||||
CONFIG_RD_LZMA=y
|
||||
CONFIG_RD_XZ=y
|
||||
# CONFIG_RD_LZO is not set
|
||||
# CONFIG_RD_LZ4 is not set
|
||||
CONFIG_RD_LZO=y
|
||||
CONFIG_RD_LZ4=y
|
||||
CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y
|
||||
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
|
||||
CONFIG_SYSCTL=y
|
||||
@@ -225,12 +224,11 @@ CONFIG_EPOLL=y
|
||||
CONFIG_SIGNALFD=y
|
||||
CONFIG_TIMERFD=y
|
||||
CONFIG_EVENTFD=y
|
||||
CONFIG_BPF_SYSCALL=y
|
||||
# CONFIG_BPF_JIT_ALWAYS_ON is not set
|
||||
# CONFIG_BPF_SYSCALL is not set
|
||||
CONFIG_SHMEM=y
|
||||
CONFIG_AIO=y
|
||||
CONFIG_ADVISE_SYSCALLS=y
|
||||
CONFIG_USERFAULTFD=y
|
||||
# CONFIG_USERFAULTFD is not set
|
||||
CONFIG_PCI_QUIRKS=y
|
||||
CONFIG_MEMBARRIER=y
|
||||
# CONFIG_EMBEDDED is not set
|
||||
@@ -253,7 +251,7 @@ CONFIG_TRACEPOINTS=y
|
||||
CONFIG_CRASH_CORE=y
|
||||
CONFIG_KEXEC_CORE=y
|
||||
CONFIG_OPROFILE=m
|
||||
# CONFIG_OPROFILE_EVENT_MULTIPLEX is not set
|
||||
CONFIG_OPROFILE_EVENT_MULTIPLEX=y
|
||||
CONFIG_HAVE_OPROFILE=y
|
||||
CONFIG_OPROFILE_NMI_TIMER=y
|
||||
CONFIG_KPROBES=y
|
||||
@@ -301,9 +299,9 @@ CONFIG_SECCOMP_FILTER=y
|
||||
CONFIG_HAVE_GCC_PLUGINS=y
|
||||
# CONFIG_GCC_PLUGINS is not set
|
||||
CONFIG_HAVE_CC_STACKPROTECTOR=y
|
||||
CONFIG_CC_STACKPROTECTOR=y
|
||||
# CONFIG_CC_STACKPROTECTOR_NONE is not set
|
||||
CONFIG_CC_STACKPROTECTOR_REGULAR=y
|
||||
# CONFIG_CC_STACKPROTECTOR is not set
|
||||
CONFIG_CC_STACKPROTECTOR_NONE=y
|
||||
# CONFIG_CC_STACKPROTECTOR_REGULAR is not set
|
||||
# CONFIG_CC_STACKPROTECTOR_STRONG is not set
|
||||
CONFIG_THIN_ARCHIVES=y
|
||||
CONFIG_HAVE_ARCH_WITHIN_STACK_FRAMES=y
|
||||
@@ -1540,7 +1538,6 @@ CONFIG_CGROUP_NET_CLASSID=y
|
||||
CONFIG_NET_RX_BUSY_POLL=y
|
||||
CONFIG_BQL=y
|
||||
CONFIG_BPF_JIT=y
|
||||
# CONFIG_BPF_STREAM_PARSER is not set
|
||||
CONFIG_NET_FLOW_LIMIT=y
|
||||
|
||||
#
|
||||
@@ -2095,6 +2092,7 @@ CONFIG_SCSI_INITIO=m
|
||||
CONFIG_SCSI_INIA100=m
|
||||
# CONFIG_SCSI_PPA is not set
|
||||
# CONFIG_SCSI_IMM is not set
|
||||
# CONFIG_PPSCSI is not set
|
||||
CONFIG_SCSI_STEX=m
|
||||
CONFIG_SCSI_SYM53C8XX_2=m
|
||||
CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1
|
||||
@@ -6335,7 +6333,7 @@ CONFIG_GOOGLE_SMI=m
|
||||
#
|
||||
# EFI (Extensible Firmware Interface) Support
|
||||
#
|
||||
CONFIG_EFI_VARS=y
|
||||
CONFIG_EFI_VARS=m
|
||||
CONFIG_EFI_ESRT=y
|
||||
CONFIG_EFI_VARS_PSTORE=m
|
||||
# CONFIG_EFI_VARS_PSTORE_DEFAULT_DISABLE is not set
|
||||
@@ -6359,11 +6357,11 @@ CONFIG_EFI_DEV_PATH_PARSER=y
|
||||
#
|
||||
CONFIG_DCACHE_WORD_ACCESS=y
|
||||
CONFIG_FS_IOMAP=y
|
||||
CONFIG_EXT2_FS=y
|
||||
CONFIG_EXT2_FS=m
|
||||
CONFIG_EXT2_FS_XATTR=y
|
||||
# CONFIG_EXT2_FS_POSIX_ACL is not set
|
||||
CONFIG_EXT2_FS_SECURITY=y
|
||||
CONFIG_EXT3_FS=y
|
||||
CONFIG_EXT3_FS=m
|
||||
CONFIG_EXT3_FS_POSIX_ACL=y
|
||||
CONFIG_EXT3_FS_SECURITY=y
|
||||
CONFIG_EXT4_FS=y
|
||||
@@ -6375,18 +6373,18 @@ CONFIG_EXT4_FS_ENCRYPTION=y
|
||||
CONFIG_JBD2=y
|
||||
# CONFIG_JBD2_DEBUG is not set
|
||||
CONFIG_FS_MBCACHE=y
|
||||
CONFIG_REISERFS_FS=y
|
||||
CONFIG_REISERFS_FS=m
|
||||
# CONFIG_REISERFS_CHECK is not set
|
||||
CONFIG_REISERFS_PROC_INFO=y
|
||||
CONFIG_REISERFS_FS_XATTR=y
|
||||
CONFIG_REISERFS_FS_POSIX_ACL=y
|
||||
CONFIG_REISERFS_FS_SECURITY=y
|
||||
CONFIG_JFS_FS=y
|
||||
CONFIG_JFS_FS=m
|
||||
CONFIG_JFS_POSIX_ACL=y
|
||||
CONFIG_JFS_SECURITY=y
|
||||
# CONFIG_JFS_DEBUG is not set
|
||||
# CONFIG_JFS_STATISTICS is not set
|
||||
CONFIG_XFS_FS=y
|
||||
CONFIG_XFS_FS=m
|
||||
CONFIG_XFS_QUOTA=y
|
||||
CONFIG_XFS_POSIX_ACL=y
|
||||
# CONFIG_XFS_RT is not set
|
||||
@@ -6475,9 +6473,7 @@ CONFIG_VFAT_FS=m
|
||||
CONFIG_FAT_DEFAULT_CODEPAGE=437
|
||||
CONFIG_FAT_DEFAULT_IOCHARSET="ascii"
|
||||
# CONFIG_FAT_DEFAULT_UTF8 is not set
|
||||
CONFIG_NTFS_FS=m
|
||||
# CONFIG_NTFS_DEBUG is not set
|
||||
# CONFIG_NTFS_RW is not set
|
||||
# CONFIG_NTFS_FS is not set
|
||||
|
||||
#
|
||||
# Pseudo filesystems
|
||||
@@ -6809,7 +6805,6 @@ CONFIG_STACK_TRACER=y
|
||||
CONFIG_BLK_DEV_IO_TRACE=y
|
||||
CONFIG_KPROBE_EVENTS=y
|
||||
CONFIG_UPROBE_EVENTS=y
|
||||
CONFIG_BPF_EVENTS=y
|
||||
CONFIG_PROBE_EVENTS=y
|
||||
CONFIG_DYNAMIC_FTRACE=y
|
||||
CONFIG_DYNAMIC_FTRACE_WITH_REGS=y
|
||||
@@ -6968,7 +6963,7 @@ CONFIG_CRYPTO_NULL=y
|
||||
CONFIG_CRYPTO_NULL2=y
|
||||
CONFIG_CRYPTO_PCRYPT=m
|
||||
CONFIG_CRYPTO_WORKQUEUE=y
|
||||
CONFIG_CRYPTO_CRYPTD=m
|
||||
CONFIG_CRYPTO_CRYPTD=y
|
||||
CONFIG_CRYPTO_MCRYPTD=m
|
||||
CONFIG_CRYPTO_AUTHENC=m
|
||||
CONFIG_CRYPTO_TEST=m
|
||||
@@ -6982,7 +6977,7 @@ CONFIG_CRYPTO_ENGINE=m
|
||||
#
|
||||
CONFIG_CRYPTO_CCM=m
|
||||
CONFIG_CRYPTO_GCM=m
|
||||
CONFIG_CRYPTO_CHACHA20POLY1305=m
|
||||
# CONFIG_CRYPTO_CHACHA20POLY1305 is not set
|
||||
CONFIG_CRYPTO_SEQIV=y
|
||||
CONFIG_CRYPTO_ECHAINIV=m
|
||||
|
||||
@@ -7043,7 +7038,7 @@ CONFIG_CRYPTO_GHASH_CLMUL_NI_INTEL=m
|
||||
# Ciphers
|
||||
#
|
||||
CONFIG_CRYPTO_AES=y
|
||||
CONFIG_CRYPTO_AES_TI=m
|
||||
# CONFIG_CRYPTO_AES_TI is not set
|
||||
CONFIG_CRYPTO_AES_X86_64=m
|
||||
CONFIG_CRYPTO_AES_NI_INTEL=m
|
||||
CONFIG_CRYPTO_ANUBIS=m
|
||||
@@ -7099,11 +7094,11 @@ CONFIG_CRYPTO_DRBG_HMAC=y
|
||||
# CONFIG_CRYPTO_DRBG_CTR is not set
|
||||
CONFIG_CRYPTO_DRBG=y
|
||||
CONFIG_CRYPTO_JITTERENTROPY=y
|
||||
CONFIG_CRYPTO_USER_API=m
|
||||
CONFIG_CRYPTO_USER_API_HASH=m
|
||||
CONFIG_CRYPTO_USER_API_SKCIPHER=m
|
||||
CONFIG_CRYPTO_USER_API=y
|
||||
CONFIG_CRYPTO_USER_API_HASH=y
|
||||
CONFIG_CRYPTO_USER_API_SKCIPHER=y
|
||||
CONFIG_CRYPTO_USER_API_RNG=m
|
||||
CONFIG_CRYPTO_USER_API_AEAD=m
|
||||
# CONFIG_CRYPTO_USER_API_AEAD is not set
|
||||
CONFIG_CRYPTO_HASH_INFO=y
|
||||
CONFIG_CRYPTO_HW=y
|
||||
CONFIG_CRYPTO_DEV_PADLOCK=m
|
||||
@@ -7183,7 +7178,7 @@ CONFIG_CRC32_SLICEBY8=y
|
||||
# CONFIG_CRC32_BIT is not set
|
||||
# CONFIG_CRC4 is not set
|
||||
# CONFIG_CRC7 is not set
|
||||
CONFIG_LIBCRC32C=y
|
||||
CONFIG_LIBCRC32C=m
|
||||
CONFIG_CRC8=m
|
||||
CONFIG_XXHASH=m
|
||||
# CONFIG_AUDIT_ARCH_COMPAT_GENERIC is not set
|
||||
@@ -7194,7 +7189,7 @@ CONFIG_LZO_COMPRESS=y
|
||||
CONFIG_LZO_DECOMPRESS=y
|
||||
CONFIG_LZ4_COMPRESS=m
|
||||
CONFIG_LZ4HC_COMPRESS=m
|
||||
CONFIG_LZ4_DECOMPRESS=m
|
||||
CONFIG_LZ4_DECOMPRESS=y
|
||||
CONFIG_ZSTD_COMPRESS=m
|
||||
CONFIG_ZSTD_DECOMPRESS=m
|
||||
CONFIG_XZ_DEC=y
|
||||
@@ -7210,6 +7205,8 @@ CONFIG_DECOMPRESS_GZIP=y
|
||||
CONFIG_DECOMPRESS_BZIP2=y
|
||||
CONFIG_DECOMPRESS_LZMA=y
|
||||
CONFIG_DECOMPRESS_XZ=y
|
||||
CONFIG_DECOMPRESS_LZO=y
|
||||
CONFIG_DECOMPRESS_LZ4=y
|
||||
CONFIG_GENERIC_ALLOCATOR=y
|
||||
CONFIG_REED_SOLOMON=m
|
||||
CONFIG_REED_SOLOMON_ENC8=y
|
||||
@@ -7253,11 +7250,3 @@ CONFIG_ARCH_HAS_UACCESS_FLUSHCACHE=y
|
||||
CONFIG_SBITMAP=y
|
||||
CONFIG_PARMAN=m
|
||||
# CONFIG_STRING_SELFTEST is not set
|
||||
|
||||
#
|
||||
# Unofficial 3rd party kernel additions
|
||||
#
|
||||
CONFIG_VIAHSS=m
|
||||
CONFIG_NDISWRAPPER=m
|
||||
CONFIG_RTL8723DE=m
|
||||
CONFIG_RTL8812AU=m
|
||||
|
||||
Binary file not shown.
+34
@@ -0,0 +1,34 @@
|
||||
From: Hans de Goede <hdegoede@redhat.com>
|
||||
Subject: [PATCH 2/2] PCI: Add function 1 DMA alias quirk for Highpoint RocketRAID 644L
|
||||
Date: Fri, 2 Mar 2018 11:36:33 +0100
|
||||
|
||||
The Highpoint RocketRAID 644L uses a Marvel 88SE9235 controller, as with
|
||||
other Marvel controllers this needs a function 1 DMA alias quirk.
|
||||
|
||||
Note the RocketRAID 642L uses the same Marvel 88SE9235 controller and
|
||||
already is listed with a function 1 DMA alias quirk.
|
||||
|
||||
Cc: stable@vger.kernel.org
|
||||
BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=1534106
|
||||
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
|
||||
---
|
||||
drivers/pci/quirks.c | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
|
||||
index 8b14bd326d4a..46d47bd6ca1f 100644
|
||||
--- a/drivers/pci/quirks.c
|
||||
+++ b/drivers/pci/quirks.c
|
||||
@@ -3908,6 +3908,8 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_MARVELL_EXT, 0x9230,
|
||||
quirk_dma_func1_alias);
|
||||
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_TTI, 0x0642,
|
||||
quirk_dma_func1_alias);
|
||||
+DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_TTI, 0x0645,
|
||||
+ quirk_dma_func1_alias);
|
||||
/* https://bugs.gentoo.org/show_bug.cgi?id=497630 */
|
||||
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_JMICRON,
|
||||
PCI_DEVICE_ID_JMICRON_JMB388_ESD,
|
||||
--
|
||||
2.14.3
|
||||
|
||||
|
||||
+46
@@ -0,0 +1,46 @@
|
||||
From 863204cfdae98626a92535ac928ad79f4d6b74ff Mon Sep 17 00:00:00 2001
|
||||
From: Arnd Bergmann <arnd@arndb.de>
|
||||
Date: Wed, 6 Dec 2017 14:17:17 +0100
|
||||
Subject: [PATCH] ARM: omap2: hide omap3_save_secure_ram on non-OMAP3 builds
|
||||
|
||||
In configurations without CONFIG_OMAP3 but with secure RAM support,
|
||||
we now run into a link failure:
|
||||
|
||||
arch/arm/mach-omap2/omap-secure.o: In function `omap3_save_secure_ram':
|
||||
omap-secure.c:(.text+0x130): undefined reference to `save_secure_ram_context'
|
||||
|
||||
The omap3_save_secure_ram() function is only called from the OMAP34xx
|
||||
power management code, so we can simply hide that function in the
|
||||
appropriate #ifdef.
|
||||
|
||||
Fixes: d09220a887f7 ("ARM: OMAP2+: Fix SRAM virt to phys translation for save_secure_ram_context")
|
||||
Acked-by: Tony Lindgren <tony@atomide.com>
|
||||
Tested-by: Dan Murphy <dmurphy@ti.com>
|
||||
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
|
||||
---
|
||||
arch/arm/mach-omap2/omap-secure.c | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
diff --git a/arch/arm/mach-omap2/omap-secure.c b/arch/arm/mach-omap2/omap-secure.c
|
||||
index 9ff92050053c..fa7f308c9027 100644
|
||||
--- a/arch/arm/mach-omap2/omap-secure.c
|
||||
+++ b/arch/arm/mach-omap2/omap-secure.c
|
||||
@@ -73,6 +73,7 @@ phys_addr_t omap_secure_ram_mempool_base(void)
|
||||
return omap_secure_memblock_base;
|
||||
}
|
||||
|
||||
+#if defined(CONFIG_ARCH_OMAP3) && defined(CONFIG_PM)
|
||||
u32 omap3_save_secure_ram(void __iomem *addr, int size)
|
||||
{
|
||||
u32 ret;
|
||||
@@ -91,6 +92,7 @@ u32 omap3_save_secure_ram(void __iomem *addr, int size)
|
||||
|
||||
return ret;
|
||||
}
|
||||
+#endif
|
||||
|
||||
/**
|
||||
* rx51_secure_dispatcher: Routine to dispatch secure PPA API calls
|
||||
--
|
||||
2.16.2
|
||||
|
||||
+37
@@ -0,0 +1,37 @@
|
||||
From: Hans de Goede <hdegoede@redhat.com>
|
||||
Subject: [PATCH 1/2] ahci: Add PCI-id for the Highpoint Rocketraid 644L card
|
||||
Date: Fri, 2 Mar 2018 11:36:32 +0100
|
||||
|
||||
Like the Highpoint Rocketraid 642L and cards using a Marvel 88SE9235
|
||||
controller in general, this RAID card also supports AHCI mode and short
|
||||
of a custom driver, this is the only way to make it work under Linux.
|
||||
|
||||
Note that even though the card is called to 644L, it has a product-id
|
||||
of 0x0645.
|
||||
|
||||
Cc: stable@vger.kernel.org
|
||||
BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=1534106
|
||||
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
|
||||
---
|
||||
drivers/ata/ahci.c | 4 +++-
|
||||
1 file changed, 3 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c
|
||||
index 355a95a83a34..1ff17799769d 100644
|
||||
--- a/drivers/ata/ahci.c
|
||||
+++ b/drivers/ata/ahci.c
|
||||
@@ -550,7 +550,9 @@ static const struct pci_device_id ahci_pci_tbl[] = {
|
||||
.driver_data = board_ahci_yes_fbs },
|
||||
{ PCI_DEVICE(PCI_VENDOR_ID_MARVELL_EXT, 0x9230),
|
||||
.driver_data = board_ahci_yes_fbs },
|
||||
- { PCI_DEVICE(PCI_VENDOR_ID_TTI, 0x0642),
|
||||
+ { PCI_DEVICE(PCI_VENDOR_ID_TTI, 0x0642), /* highpoint rocketraid 642L */
|
||||
+ .driver_data = board_ahci_yes_fbs },
|
||||
+ { PCI_DEVICE(PCI_VENDOR_ID_TTI, 0x0645), /* highpoint rocketraid 644L */
|
||||
.driver_data = board_ahci_yes_fbs },
|
||||
|
||||
/* Promise */
|
||||
--
|
||||
2.14.3
|
||||
|
||||
|
||||
@@ -90,7 +90,7 @@
|
||||
fs/aufs/wkq.c | 378 ++++
|
||||
fs/aufs/wkq.h | 81 +
|
||||
fs/aufs/xattr.c | 343 ++++
|
||||
fs/aufs/xino.c | 1406 +++++++++++++++
|
||||
fs/aufs/xino.c | 1457 +++++++++++++++
|
||||
fs/dcache.c | 2 +-
|
||||
fs/fcntl.c | 4 +-
|
||||
fs/inode.c | 2 +-
|
||||
@@ -117,7 +117,7 @@
|
||||
mm/mmap.c | 33 +-
|
||||
mm/nommu.c | 10 +-
|
||||
mm/prfile.c | 86 +
|
||||
119 files changed, 35967 insertions(+), 31 deletions(-)
|
||||
119 files changed, 36018 insertions(+), 31 deletions(-)
|
||||
|
||||
diff --git a/Documentation/ABI/testing/debugfs-aufs b/Documentation/ABI/testing/debugfs-aufs
|
||||
new file mode 100644
|
||||
@@ -34595,10 +34595,10 @@ index 000000000000..dbe452868cd5
|
||||
+}
|
||||
diff --git a/fs/aufs/xino.c b/fs/aufs/xino.c
|
||||
new file mode 100644
|
||||
index 000000000000..74aecb7193ab
|
||||
index 000000000000..eea2c34cabf4
|
||||
--- /dev/null
|
||||
+++ b/fs/aufs/xino.c
|
||||
@@ -0,0 +1,1406 @@
|
||||
@@ -0,0 +1,1457 @@
|
||||
+/*
|
||||
+ * SPDX-License-Identifier: GPL-2.0
|
||||
+ * Copyright (C) 2005-2017 Junjiro R. Okajima
|
||||
@@ -34612,6 +34612,9 @@ index 000000000000..74aecb7193ab
|
||||
+#include <linux/statfs.h>
|
||||
+#include "aufs.h"
|
||||
+
|
||||
+static ssize_t xino_fread_wkq(vfs_readf_t func, struct file *file, void *buf,
|
||||
+ size_t size, loff_t *pos);
|
||||
+
|
||||
+/* todo: unnecessary to support mmap_sem since kernel-space? */
|
||||
+ssize_t xino_fread(vfs_readf_t func, struct file *file, void *kbuf, size_t size,
|
||||
+ loff_t *pos)
|
||||
@@ -34622,14 +34625,26 @@ index 000000000000..74aecb7193ab
|
||||
+ void *k;
|
||||
+ char __user *u;
|
||||
+ } buf;
|
||||
+ int i;
|
||||
+ const int prevent_endless = 10;
|
||||
+
|
||||
+ i = 0;
|
||||
+ buf.k = kbuf;
|
||||
+ oldfs = get_fs();
|
||||
+ set_fs(KERNEL_DS);
|
||||
+ do {
|
||||
+ /* todo: signal_pending? */
|
||||
+ err = func(file, buf.u, size, pos);
|
||||
+ } while (err == -EAGAIN || err == -EINTR);
|
||||
+ if (err == -EINTR
|
||||
+ && !au_wkq_test()
|
||||
+ && fatal_signal_pending(current)) {
|
||||
+ set_fs(oldfs);
|
||||
+ err = xino_fread_wkq(func, file, kbuf, size, pos);
|
||||
+ BUG_ON(err == -EINTR);
|
||||
+ oldfs = get_fs();
|
||||
+ set_fs(KERNEL_DS);
|
||||
+ }
|
||||
+ } while (i++ < prevent_endless
|
||||
+ && (err == -EAGAIN || err == -EINTR));
|
||||
+ set_fs(oldfs);
|
||||
+
|
||||
+#if 0 /* reserved for future use */
|
||||
@@ -34640,6 +34655,42 @@ index 000000000000..74aecb7193ab
|
||||
+ return err;
|
||||
+}
|
||||
+
|
||||
+struct xino_fread_args {
|
||||
+ ssize_t *errp;
|
||||
+ vfs_readf_t func;
|
||||
+ struct file *file;
|
||||
+ void *buf;
|
||||
+ size_t size;
|
||||
+ loff_t *pos;
|
||||
+};
|
||||
+
|
||||
+static void call_xino_fread(void *args)
|
||||
+{
|
||||
+ struct xino_fread_args *a = args;
|
||||
+ *a->errp = xino_fread(a->func, a->file, a->buf, a->size, a->pos);
|
||||
+}
|
||||
+
|
||||
+static ssize_t xino_fread_wkq(vfs_readf_t func, struct file *file, void *buf,
|
||||
+ size_t size, loff_t *pos)
|
||||
+{
|
||||
+ ssize_t err;
|
||||
+ int wkq_err;
|
||||
+ struct xino_fread_args args = {
|
||||
+ .errp = &err,
|
||||
+ .func = func,
|
||||
+ .file = file,
|
||||
+ .buf = buf,
|
||||
+ .size = size,
|
||||
+ .pos = pos
|
||||
+ };
|
||||
+
|
||||
+ wkq_err = au_wkq_wait(call_xino_fread, &args);
|
||||
+ if (unlikely(wkq_err))
|
||||
+ err = wkq_err;
|
||||
+
|
||||
+ return err;
|
||||
+}
|
||||
+
|
||||
+/* ---------------------------------------------------------------------- */
|
||||
+
|
||||
+static ssize_t xino_fwrite_wkq(vfs_writef_t func, struct file *file, void *buf,
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
--- a/drivers/input/touchscreen/goodix.c
|
||||
+++ a/drivers/input/touchscreen/goodix.c
|
||||
@@ -947,6 +954,7 @@ static SIMPLE_DEV_PM_OPS(goodix_pm_ops, goodix_suspend, goodix_resume);
|
||||
|
||||
static const struct i2c_device_id goodix_ts_id[] = {
|
||||
{ "GDIX1001:00", 0 },
|
||||
+ { "GDIX1002:00", 0 },
|
||||
{ }
|
||||
};
|
||||
MODULE_DEVICE_TABLE(i2c, goodix_ts_id);
|
||||
@@ -954,6 +962,7 @@ MODULE_DEVICE_TABLE(i2c, goodix_ts_id);
|
||||
#ifdef CONFIG_ACPI
|
||||
static const struct acpi_device_id goodix_acpi_match[] = {
|
||||
{ "GDIX1001", 0 },
|
||||
+ { "GDIX1002", 0 },
|
||||
{ }
|
||||
};
|
||||
MODULE_DEVICE_TABLE(acpi, goodix_acpi_match);
|
||||
@@ -0,0 +1,60 @@
|
||||
From faec44b6838312484d63e82286087cf2d5ebb891 Mon Sep 17 00:00:00 2001
|
||||
From: Hans de Goede <hdegoede@redhat.com>
|
||||
Date: Fri, 12 Jan 2018 00:36:48 -0800
|
||||
Subject: [PATCH] Input: goodix - disable IRQs while suspended
|
||||
|
||||
We should not try to do any i2c transfers before the controller is
|
||||
resumed (which happens before our resume method gets called).
|
||||
|
||||
So we need to disable our IRQ while suspended to enforce this. The
|
||||
code paths for devices with GPIOs for the int and reset pins already
|
||||
disable the IRQ the through goodix_free_irq().
|
||||
|
||||
This commit also disables the IRQ while suspended for devices without
|
||||
GPIOs for the int and reset pins.
|
||||
|
||||
This fixes the i2c bus sometimes getting stuck after a suspend/resume
|
||||
causing the touchscreen to sometimes not work after a suspend/resume.
|
||||
This has been tested on a GPD pocked device.
|
||||
|
||||
BugLink: https://github.com/nexus511/gpd-ubuntu-packages/issues/10
|
||||
BugLink: https://www.reddit.com/r/GPDPocket/comments/7niut2/fix_for_broken_touch_after_resume_all_linux/
|
||||
Tested-by: Hans de Goede <hdegoede@redhat.com>
|
||||
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
|
||||
Reviewed-by: Bastien Nocera <hadess@hadess.net>
|
||||
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
|
||||
---
|
||||
drivers/input/touchscreen/goodix.c | 8 ++++++--
|
||||
1 file changed, 6 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/drivers/input/touchscreen/goodix.c b/drivers/input/touchscreen/goodix.c
|
||||
index 69d0b8cbc71f..ecec8eb17f28 100644
|
||||
--- a/drivers/input/touchscreen/goodix.c
|
||||
+++ b/drivers/input/touchscreen/goodix.c
|
||||
@@ -878,8 +878,10 @@ static int __maybe_unused goodix_suspend(struct device *dev)
|
||||
int error;
|
||||
|
||||
/* We need gpio pins to suspend/resume */
|
||||
- if (!ts->gpiod_int || !ts->gpiod_rst)
|
||||
+ if (!ts->gpiod_int || !ts->gpiod_rst) {
|
||||
+ disable_irq(client->irq);
|
||||
return 0;
|
||||
+ }
|
||||
|
||||
wait_for_completion(&ts->firmware_loading_complete);
|
||||
|
||||
@@ -919,8 +921,10 @@ static int __maybe_unused goodix_resume(struct device *dev)
|
||||
struct goodix_ts_data *ts = i2c_get_clientdata(client);
|
||||
int error;
|
||||
|
||||
- if (!ts->gpiod_int || !ts->gpiod_rst)
|
||||
+ if (!ts->gpiod_int || !ts->gpiod_rst) {
|
||||
+ enable_irq(client->irq);
|
||||
return 0;
|
||||
+ }
|
||||
|
||||
/*
|
||||
* Exit sleep mode by outputting HIGH level to INT pin
|
||||
--
|
||||
2.16.2
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- /dev/null 2018-02-18 13:06:28.903837808 +0200
|
||||
+++ b/net/wireguard/allowedips.c 2018-02-18 22:22:31.000000000 +0200
|
||||
@@ -0,0 +1,327 @@
|
||||
--- /dev/null 2018-03-04 21:55:12.891724619 +0200
|
||||
+++ b/net/wireguard/allowedips.c 2018-03-04 19:51:33.000000000 +0200
|
||||
@@ -0,0 +1,328 @@
|
||||
+/* SPDX-License-Identifier: GPL-2.0
|
||||
+ *
|
||||
+ * Copyright (C) 2015-2018 Jason A. Donenfeld <Jason@zx2c4.com>. All Rights Reserved.
|
||||
@@ -142,7 +142,8 @@
|
||||
+/* This could be much faster if it actually just compared the common bits properly,
|
||||
+ * by precomputing a mask bswap(~0 << (32 - cidr)), and the rest, but it turns out that
|
||||
+ * common_bits is already super fast on modern processors, even taking into account
|
||||
+ * the unfortunate bswap. So, we just inline it like this instead. */
|
||||
+ * the unfortunate bswap. So, we just inline it like this instead.
|
||||
+ */
|
||||
+#define prefix_matches(node, key, bits) (common_bits(node, key, bits) >= node->cidr)
|
||||
+
|
||||
+static __always_inline struct allowedips_node *find_node(struct allowedips_node *trie, u8 bits, const u8 *key)
|
||||
@@ -328,8 +329,8 @@
|
||||
+}
|
||||
+
|
||||
+#include "selftest/allowedips.h"
|
||||
--- /dev/null 2018-02-18 13:06:28.903837808 +0200
|
||||
+++ b/net/wireguard/cookie.c 2018-02-18 22:22:31.000000000 +0200
|
||||
--- /dev/null 2018-03-04 21:55:12.891724619 +0200
|
||||
+++ b/net/wireguard/cookie.c 2018-03-04 19:51:33.000000000 +0200
|
||||
@@ -0,0 +1,195 @@
|
||||
+/* SPDX-License-Identifier: GPL-2.0
|
||||
+ *
|
||||
@@ -526,8 +527,8 @@
|
||||
+out:
|
||||
+ peer_put(entry->peer);
|
||||
+}
|
||||
--- /dev/null 2018-02-18 13:06:28.903837808 +0200
|
||||
+++ b/net/wireguard/device.c 2018-02-18 22:22:31.000000000 +0200
|
||||
--- /dev/null 2018-03-04 21:55:12.891724619 +0200
|
||||
+++ b/net/wireguard/device.c 2018-03-04 19:51:33.000000000 +0200
|
||||
@@ -0,0 +1,421 @@
|
||||
+/* SPDX-License-Identifier: GPL-2.0
|
||||
+ *
|
||||
@@ -950,8 +951,8 @@
|
||||
+#endif
|
||||
+ rcu_barrier_bh();
|
||||
+}
|
||||
--- /dev/null 2018-02-18 13:06:28.903837808 +0200
|
||||
+++ b/net/wireguard/hashtables.c 2018-02-18 22:22:31.000000000 +0200
|
||||
--- /dev/null 2018-03-04 21:55:12.891724619 +0200
|
||||
+++ b/net/wireguard/hashtables.c 2018-03-04 19:51:33.000000000 +0200
|
||||
@@ -0,0 +1,168 @@
|
||||
+/* SPDX-License-Identifier: GPL-2.0
|
||||
+ *
|
||||
@@ -1121,8 +1122,8 @@
|
||||
+ rcu_read_unlock_bh();
|
||||
+ return entry;
|
||||
+}
|
||||
--- /dev/null 2018-02-18 13:06:28.903837808 +0200
|
||||
+++ b/net/wireguard/main.c 2018-02-18 22:22:31.000000000 +0200
|
||||
--- /dev/null 2018-03-04 21:55:12.891724619 +0200
|
||||
+++ b/net/wireguard/main.c 2018-03-04 19:51:33.000000000 +0200
|
||||
@@ -0,0 +1,69 @@
|
||||
+/* SPDX-License-Identifier: GPL-2.0
|
||||
+ *
|
||||
@@ -1193,8 +1194,8 @@
|
||||
+MODULE_VERSION(WIREGUARD_VERSION);
|
||||
+MODULE_ALIAS_RTNL_LINK(KBUILD_MODNAME);
|
||||
+MODULE_ALIAS_GENL_FAMILY(WG_GENL_NAME);
|
||||
--- /dev/null 2018-02-18 13:06:28.903837808 +0200
|
||||
+++ b/net/wireguard/netlink.c 2018-02-18 22:22:31.000000000 +0200
|
||||
--- /dev/null 2018-03-04 21:55:12.891724619 +0200
|
||||
+++ b/net/wireguard/netlink.c 2018-03-04 19:51:33.000000000 +0200
|
||||
@@ -0,0 +1,517 @@
|
||||
+/* SPDX-License-Identifier: GPL-2.0
|
||||
+ *
|
||||
@@ -1713,8 +1714,8 @@
|
||||
+{
|
||||
+ genl_unregister_family(&genl_family);
|
||||
+}
|
||||
--- /dev/null 2018-02-18 13:06:28.903837808 +0200
|
||||
+++ b/net/wireguard/noise.c 2018-02-18 22:22:31.000000000 +0200
|
||||
--- /dev/null 2018-03-04 21:55:12.891724619 +0200
|
||||
+++ b/net/wireguard/noise.c 2018-03-04 19:51:33.000000000 +0200
|
||||
@@ -0,0 +1,635 @@
|
||||
+/* SPDX-License-Identifier: GPL-2.0
|
||||
+ *
|
||||
@@ -2351,8 +2352,8 @@
|
||||
+ up_write(&handshake->lock);
|
||||
+ return false;
|
||||
+}
|
||||
--- /dev/null 2018-02-18 13:06:28.903837808 +0200
|
||||
+++ b/net/wireguard/peer.c 2018-02-18 22:22:31.000000000 +0200
|
||||
--- /dev/null 2018-03-04 21:55:12.891724619 +0200
|
||||
+++ b/net/wireguard/peer.c 2018-03-04 19:51:33.000000000 +0200
|
||||
@@ -0,0 +1,136 @@
|
||||
+/* SPDX-License-Identifier: GPL-2.0
|
||||
+ *
|
||||
@@ -2490,8 +2491,8 @@
|
||||
+ list_for_each_entry_safe(peer, temp, &wg->peer_list, peer_list)
|
||||
+ peer_remove(peer);
|
||||
+}
|
||||
--- /dev/null 2018-02-18 13:06:28.903837808 +0200
|
||||
+++ b/net/wireguard/queueing.c 2018-02-18 22:22:31.000000000 +0200
|
||||
--- /dev/null 2018-03-04 21:55:12.891724619 +0200
|
||||
+++ b/net/wireguard/queueing.c 2018-03-04 19:51:33.000000000 +0200
|
||||
@@ -0,0 +1,46 @@
|
||||
+/* SPDX-License-Identifier: GPL-2.0
|
||||
+ *
|
||||
@@ -2539,8 +2540,8 @@
|
||||
+ WARN_ON(!ptr_ring_empty_bh(&queue->ring));
|
||||
+ ptr_ring_cleanup(&queue->ring, NULL);
|
||||
+}
|
||||
--- /dev/null 2018-02-18 13:06:28.903837808 +0200
|
||||
+++ b/net/wireguard/ratelimiter.c 2018-02-18 22:22:31.000000000 +0200
|
||||
--- /dev/null 2018-03-04 21:55:12.891724619 +0200
|
||||
+++ b/net/wireguard/ratelimiter.c 2018-03-04 19:51:33.000000000 +0200
|
||||
@@ -0,0 +1,199 @@
|
||||
+/* SPDX-License-Identifier: GPL-2.0
|
||||
+ *
|
||||
@@ -2741,8 +2742,8 @@
|
||||
+}
|
||||
+
|
||||
+#include "selftest/ratelimiter.h"
|
||||
--- /dev/null 2018-02-18 13:06:28.903837808 +0200
|
||||
+++ b/net/wireguard/receive.c 2018-02-18 22:22:31.000000000 +0200
|
||||
--- /dev/null 2018-03-04 21:55:12.891724619 +0200
|
||||
+++ b/net/wireguard/receive.c 2018-03-04 19:51:33.000000000 +0200
|
||||
@@ -0,0 +1,490 @@
|
||||
+/* SPDX-License-Identifier: GPL-2.0
|
||||
+ *
|
||||
@@ -3234,8 +3235,8 @@
|
||||
+err:
|
||||
+ dev_kfree_skb(skb);
|
||||
+}
|
||||
--- /dev/null 2018-02-18 13:06:28.903837808 +0200
|
||||
+++ b/net/wireguard/send.c 2018-02-18 22:22:31.000000000 +0200
|
||||
--- /dev/null 2018-03-04 21:55:12.891724619 +0200
|
||||
+++ b/net/wireguard/send.c 2018-03-04 19:51:33.000000000 +0200
|
||||
@@ -0,0 +1,348 @@
|
||||
+/* SPDX-License-Identifier: GPL-2.0
|
||||
+ *
|
||||
@@ -3585,8 +3586,8 @@
|
||||
+ */
|
||||
+ packet_send_queued_handshake_initiation(peer, false);
|
||||
+}
|
||||
--- /dev/null 2018-02-18 13:06:28.903837808 +0200
|
||||
+++ b/net/wireguard/socket.c 2018-02-18 22:22:31.000000000 +0200
|
||||
--- /dev/null 2018-03-04 21:55:12.891724619 +0200
|
||||
+++ b/net/wireguard/socket.c 2018-03-04 19:51:33.000000000 +0200
|
||||
@@ -0,0 +1,393 @@
|
||||
+/* SPDX-License-Identifier: GPL-2.0
|
||||
+ *
|
||||
@@ -3981,8 +3982,8 @@
|
||||
+ sock_free(old4);
|
||||
+ sock_free(old6);
|
||||
+}
|
||||
--- /dev/null 2018-02-18 13:06:28.903837808 +0200
|
||||
+++ b/net/wireguard/timers.c 2018-02-18 22:22:31.000000000 +0200
|
||||
--- /dev/null 2018-03-04 21:55:12.891724619 +0200
|
||||
+++ b/net/wireguard/timers.c 2018-03-04 19:51:33.000000000 +0200
|
||||
@@ -0,0 +1,199 @@
|
||||
+/* SPDX-License-Identifier: GPL-2.0
|
||||
+ *
|
||||
@@ -4183,8 +4184,8 @@
|
||||
+ del_timer_sync(&peer->timer_persistent_keepalive);
|
||||
+ flush_work(&peer->clear_peer_work);
|
||||
+}
|
||||
--- /dev/null 2018-02-18 13:06:28.903837808 +0200
|
||||
+++ b/net/wireguard/allowedips.h 2018-02-18 22:22:31.000000000 +0200
|
||||
--- /dev/null 2018-03-04 21:55:12.891724619 +0200
|
||||
+++ b/net/wireguard/allowedips.h 2018-03-04 19:51:33.000000000 +0200
|
||||
@@ -0,0 +1,44 @@
|
||||
+/* SPDX-License-Identifier: GPL-2.0
|
||||
+ *
|
||||
@@ -4230,8 +4231,8 @@
|
||||
+#endif
|
||||
+
|
||||
+#endif /* _WG_ALLOWEDIPS_H */
|
||||
--- /dev/null 2018-02-18 13:06:28.903837808 +0200
|
||||
+++ b/net/wireguard/cookie.h 2018-02-18 22:22:31.000000000 +0200
|
||||
--- /dev/null 2018-03-04 21:55:12.891724619 +0200
|
||||
+++ b/net/wireguard/cookie.h 2018-03-04 19:51:33.000000000 +0200
|
||||
@@ -0,0 +1,52 @@
|
||||
+/* SPDX-License-Identifier: GPL-2.0
|
||||
+ *
|
||||
@@ -4285,8 +4286,8 @@
|
||||
+void cookie_message_consume(struct message_handshake_cookie *src, struct wireguard_device *wg);
|
||||
+
|
||||
+#endif /* _WG_COOKIE_H */
|
||||
--- /dev/null 2018-02-18 13:06:28.903837808 +0200
|
||||
+++ b/net/wireguard/device.h 2018-02-18 22:22:31.000000000 +0200
|
||||
--- /dev/null 2018-03-04 21:55:12.891724619 +0200
|
||||
+++ b/net/wireguard/device.h 2018-03-04 19:51:33.000000000 +0200
|
||||
@@ -0,0 +1,64 @@
|
||||
+/* SPDX-License-Identifier: GPL-2.0
|
||||
+ *
|
||||
@@ -4352,8 +4353,8 @@
|
||||
+void device_uninit(void);
|
||||
+
|
||||
+#endif /* _WG_DEVICE_H */
|
||||
--- /dev/null 2018-02-18 13:06:28.903837808 +0200
|
||||
+++ b/net/wireguard/hashtables.h 2018-02-18 22:22:31.000000000 +0200
|
||||
--- /dev/null 2018-03-04 21:55:12.891724619 +0200
|
||||
+++ b/net/wireguard/hashtables.h 2018-03-04 19:51:33.000000000 +0200
|
||||
@@ -0,0 +1,52 @@
|
||||
+/* SPDX-License-Identifier: GPL-2.0
|
||||
+ *
|
||||
@@ -4407,9 +4408,9 @@
|
||||
+struct index_hashtable_entry *index_hashtable_lookup(struct index_hashtable *table, const enum index_hashtable_type type_mask, const __le32 index);
|
||||
+
|
||||
+#endif /* _WG_HASHTABLES_H */
|
||||
--- /dev/null 2018-02-18 13:06:28.903837808 +0200
|
||||
+++ b/net/wireguard/messages.h 2018-02-18 22:22:31.000000000 +0200
|
||||
@@ -0,0 +1,129 @@
|
||||
--- /dev/null 2018-03-04 21:55:12.891724619 +0200
|
||||
+++ b/net/wireguard/messages.h 2018-03-04 19:51:33.000000000 +0200
|
||||
@@ -0,0 +1,128 @@
|
||||
+/* SPDX-License-Identifier: GPL-2.0 */
|
||||
+/*
|
||||
+ * Copyright (C) 2015-2018 Jason A. Donenfeld <Jason@zx2c4.com>. All Rights Reserved.
|
||||
@@ -4472,8 +4473,7 @@
|
||||
+ MESSAGE_HANDSHAKE_INITIATION = 1,
|
||||
+ MESSAGE_HANDSHAKE_RESPONSE = 2,
|
||||
+ MESSAGE_HANDSHAKE_COOKIE = 3,
|
||||
+ MESSAGE_DATA = 4,
|
||||
+ MESSAGE_TOTAL = 5
|
||||
+ MESSAGE_DATA = 4
|
||||
+};
|
||||
+
|
||||
+struct message_header {
|
||||
@@ -4539,8 +4539,8 @@
|
||||
+};
|
||||
+
|
||||
+#endif /* _WG_MESSAGES_H */
|
||||
--- /dev/null 2018-02-18 13:06:28.903837808 +0200
|
||||
+++ b/net/wireguard/netlink.h 2018-02-18 22:22:31.000000000 +0200
|
||||
--- /dev/null 2018-03-04 21:55:12.891724619 +0200
|
||||
+++ b/net/wireguard/netlink.h 2018-03-04 19:51:33.000000000 +0200
|
||||
@@ -0,0 +1,12 @@
|
||||
+/* SPDX-License-Identifier: GPL-2.0
|
||||
+ *
|
||||
@@ -4554,8 +4554,8 @@
|
||||
+void genetlink_uninit(void);
|
||||
+
|
||||
+#endif /* _WG_NETLINK_H */
|
||||
--- /dev/null 2018-02-18 13:06:28.903837808 +0200
|
||||
+++ b/net/wireguard/noise.h 2018-02-18 22:22:31.000000000 +0200
|
||||
--- /dev/null 2018-03-04 21:55:12.891724619 +0200
|
||||
+++ b/net/wireguard/noise.h 2018-03-04 19:51:33.000000000 +0200
|
||||
@@ -0,0 +1,117 @@
|
||||
+/* SPDX-License-Identifier: GPL-2.0
|
||||
+ *
|
||||
@@ -4613,10 +4613,10 @@
|
||||
+};
|
||||
+
|
||||
+struct noise_static_identity {
|
||||
+ bool has_identity;
|
||||
+ u8 static_public[NOISE_PUBLIC_KEY_LEN];
|
||||
+ u8 static_private[NOISE_PUBLIC_KEY_LEN];
|
||||
+ struct rw_semaphore lock;
|
||||
+ bool has_identity;
|
||||
+};
|
||||
+
|
||||
+enum noise_handshake_state {
|
||||
@@ -4668,14 +4668,14 @@
|
||||
+bool noise_handshake_create_initiation(struct message_handshake_initiation *dst, struct noise_handshake *handshake);
|
||||
+struct wireguard_peer *noise_handshake_consume_initiation(struct message_handshake_initiation *src, struct wireguard_device *wg);
|
||||
+
|
||||
+bool noise_handshake_create_response(struct message_handshake_response *dst, struct noise_handshake *peer);
|
||||
+bool noise_handshake_create_response(struct message_handshake_response *dst, struct noise_handshake *handshake);
|
||||
+struct wireguard_peer *noise_handshake_consume_response(struct message_handshake_response *src, struct wireguard_device *wg);
|
||||
+
|
||||
+bool noise_handshake_begin_session(struct noise_handshake *handshake, struct noise_keypairs *keypairs);
|
||||
+
|
||||
+#endif /* _WG_NOISE_H */
|
||||
--- /dev/null 2018-02-18 13:06:28.903837808 +0200
|
||||
+++ b/net/wireguard/peer.h 2018-02-18 22:22:31.000000000 +0200
|
||||
--- /dev/null 2018-03-04 21:55:12.891724619 +0200
|
||||
+++ b/net/wireguard/peer.h 2018-03-04 19:51:33.000000000 +0200
|
||||
@@ -0,0 +1,73 @@
|
||||
+/* SPDX-License-Identifier: GPL-2.0
|
||||
+ *
|
||||
@@ -4750,8 +4750,8 @@
|
||||
+struct wireguard_peer *peer_lookup_by_index(struct wireguard_device *wg, u32 index);
|
||||
+
|
||||
+#endif /* _WG_PEER_H */
|
||||
--- /dev/null 2018-02-18 13:06:28.903837808 +0200
|
||||
+++ b/net/wireguard/queueing.h 2018-02-18 22:22:31.000000000 +0200
|
||||
--- /dev/null 2018-03-04 21:55:12.891724619 +0200
|
||||
+++ b/net/wireguard/queueing.h 2018-03-04 19:51:33.000000000 +0200
|
||||
@@ -0,0 +1,142 @@
|
||||
+/* SPDX-License-Identifier: GPL-2.0
|
||||
+ *
|
||||
@@ -4818,7 +4818,7 @@
|
||||
+
|
||||
+static inline void skb_reset(struct sk_buff *skb)
|
||||
+{
|
||||
+ skb_scrub_packet(skb, false);
|
||||
+ skb_scrub_packet(skb, true);
|
||||
+ memset(&skb->headers_start, 0, offsetof(struct sk_buff, headers_end) - offsetof(struct sk_buff, headers_start));
|
||||
+ skb->queue_mapping = 0;
|
||||
+ skb->nohdr = 0;
|
||||
@@ -4895,8 +4895,8 @@
|
||||
+#endif
|
||||
+
|
||||
+#endif /* _WG_QUEUEING_H */
|
||||
--- /dev/null 2018-02-18 13:06:28.903837808 +0200
|
||||
+++ b/net/wireguard/ratelimiter.h 2018-02-18 22:22:31.000000000 +0200
|
||||
--- /dev/null 2018-03-04 21:55:12.891724619 +0200
|
||||
+++ b/net/wireguard/ratelimiter.h 2018-03-04 19:51:33.000000000 +0200
|
||||
@@ -0,0 +1,19 @@
|
||||
+/* SPDX-License-Identifier: GPL-2.0
|
||||
+ *
|
||||
@@ -4917,8 +4917,8 @@
|
||||
+#endif
|
||||
+
|
||||
+#endif /* _WG_RATELIMITER_H */
|
||||
--- /dev/null 2018-02-18 13:06:28.903837808 +0200
|
||||
+++ b/net/wireguard/socket.h 2018-02-18 22:22:31.000000000 +0200
|
||||
--- /dev/null 2018-03-04 21:55:12.891724619 +0200
|
||||
+++ b/net/wireguard/socket.h 2018-03-04 19:51:33.000000000 +0200
|
||||
@@ -0,0 +1,35 @@
|
||||
+/* SPDX-License-Identifier: GPL-2.0
|
||||
+ *
|
||||
@@ -4955,8 +4955,8 @@
|
||||
+#endif
|
||||
+
|
||||
+#endif /* _WG_SOCKET_H */
|
||||
--- /dev/null 2018-02-18 13:06:28.903837808 +0200
|
||||
+++ b/net/wireguard/timers.h 2018-02-18 22:22:31.000000000 +0200
|
||||
--- /dev/null 2018-03-04 21:55:12.891724619 +0200
|
||||
+++ b/net/wireguard/timers.h 2018-03-04 19:51:33.000000000 +0200
|
||||
@@ -0,0 +1,21 @@
|
||||
+/* SPDX-License-Identifier: GPL-2.0
|
||||
+ *
|
||||
@@ -4979,12 +4979,12 @@
|
||||
+void timers_any_authenticated_packet_traversal(struct wireguard_peer *peer);
|
||||
+
|
||||
+#endif /* _WG_TIMERS_H */
|
||||
--- /dev/null 2018-02-18 13:06:28.903837808 +0200
|
||||
+++ b/net/wireguard/version.h 2018-02-18 22:22:31.000000000 +0200
|
||||
--- /dev/null 2018-03-04 21:55:12.891724619 +0200
|
||||
+++ b/net/wireguard/version.h 2018-03-04 19:51:33.000000000 +0200
|
||||
@@ -0,0 +1 @@
|
||||
+#define WIREGUARD_VERSION "0.0.20180218"
|
||||
--- /dev/null 2018-02-18 13:06:28.903837808 +0200
|
||||
+++ b/net/wireguard/uapi/wireguard.h 2018-02-18 22:22:31.000000000 +0200
|
||||
+#define WIREGUARD_VERSION "0.0.20180304"
|
||||
--- /dev/null 2018-03-04 21:55:12.891724619 +0200
|
||||
+++ b/net/wireguard/uapi/wireguard.h 2018-03-04 19:51:33.000000000 +0200
|
||||
@@ -0,0 +1,182 @@
|
||||
+/* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR MIT)
|
||||
+ *
|
||||
@@ -5168,8 +5168,8 @@
|
||||
+#define WGALLOWEDIP_A_MAX (__WGALLOWEDIP_A_LAST - 1)
|
||||
+
|
||||
+#endif /* _WG_UAPI_WIREGUARD_H */
|
||||
--- /dev/null 2018-02-18 13:06:28.903837808 +0200
|
||||
+++ b/net/wireguard/selftest/allowedips.h 2018-02-18 22:22:31.000000000 +0200
|
||||
--- /dev/null 2018-03-04 21:55:12.891724619 +0200
|
||||
+++ b/net/wireguard/selftest/allowedips.h 2018-03-04 19:51:33.000000000 +0200
|
||||
@@ -0,0 +1,514 @@
|
||||
+/* SPDX-License-Identifier: GPL-2.0
|
||||
+ *
|
||||
@@ -5685,8 +5685,8 @@
|
||||
+#undef init_peer
|
||||
+
|
||||
+#endif
|
||||
--- /dev/null 2018-02-18 13:06:28.903837808 +0200
|
||||
+++ b/net/wireguard/selftest/blake2s.h 2018-02-18 22:22:31.000000000 +0200
|
||||
--- /dev/null 2018-03-04 21:55:12.891724619 +0200
|
||||
+++ b/net/wireguard/selftest/blake2s.h 2018-03-04 19:51:33.000000000 +0200
|
||||
@@ -0,0 +1,559 @@
|
||||
+/* SPDX-License-Identifier: GPL-2.0
|
||||
+ *
|
||||
@@ -6247,8 +6247,8 @@
|
||||
+ return success;
|
||||
+}
|
||||
+#endif
|
||||
--- /dev/null 2018-02-18 13:06:28.903837808 +0200
|
||||
+++ b/net/wireguard/selftest/chacha20poly1305.h 2018-02-18 22:22:31.000000000 +0200
|
||||
--- /dev/null 2018-03-04 21:55:12.891724619 +0200
|
||||
+++ b/net/wireguard/selftest/chacha20poly1305.h 2018-03-04 19:51:33.000000000 +0200
|
||||
@@ -0,0 +1,333 @@
|
||||
+/* SPDX-License-Identifier: GPL-2.0
|
||||
+ *
|
||||
@@ -6583,8 +6583,8 @@
|
||||
+ return success;
|
||||
+}
|
||||
+#endif
|
||||
--- /dev/null 2018-02-18 13:06:28.903837808 +0200
|
||||
+++ b/net/wireguard/selftest/counter.h 2018-02-18 22:22:31.000000000 +0200
|
||||
--- /dev/null 2018-03-04 21:55:12.891724619 +0200
|
||||
+++ b/net/wireguard/selftest/counter.h 2018-03-04 19:51:33.000000000 +0200
|
||||
@@ -0,0 +1,92 @@
|
||||
+/* SPDX-License-Identifier: GPL-2.0
|
||||
+ *
|
||||
@@ -6678,8 +6678,8 @@
|
||||
+ return success;
|
||||
+}
|
||||
+#endif
|
||||
--- /dev/null 2018-02-18 13:06:28.903837808 +0200
|
||||
+++ b/net/wireguard/selftest/curve25519.h 2018-02-18 22:22:31.000000000 +0200
|
||||
--- /dev/null 2018-03-04 21:55:12.891724619 +0200
|
||||
+++ b/net/wireguard/selftest/curve25519.h 2018-03-04 19:51:33.000000000 +0200
|
||||
@@ -0,0 +1,103 @@
|
||||
+/* SPDX-License-Identifier: GPL-2.0
|
||||
+ *
|
||||
@@ -6784,8 +6784,8 @@
|
||||
+ return success;
|
||||
+}
|
||||
+#endif
|
||||
--- /dev/null 2018-02-18 13:06:28.903837808 +0200
|
||||
+++ b/net/wireguard/selftest/poly1305.h 2018-02-18 22:22:31.000000000 +0200
|
||||
--- /dev/null 2018-03-04 21:55:12.891724619 +0200
|
||||
+++ b/net/wireguard/selftest/poly1305.h 2018-03-04 19:51:33.000000000 +0200
|
||||
@@ -0,0 +1,1566 @@
|
||||
+/* SPDX-License-Identifier: GPL-2.0
|
||||
+ *
|
||||
@@ -8353,8 +8353,8 @@
|
||||
+ return success;
|
||||
+}
|
||||
+#endif
|
||||
--- /dev/null 2018-02-18 13:06:28.903837808 +0200
|
||||
+++ b/net/wireguard/selftest/ratelimiter.h 2018-02-18 22:22:31.000000000 +0200
|
||||
--- /dev/null 2018-03-04 21:55:12.891724619 +0200
|
||||
+++ b/net/wireguard/selftest/ratelimiter.h 2018-03-04 19:51:33.000000000 +0200
|
||||
@@ -0,0 +1,157 @@
|
||||
+/* SPDX-License-Identifier: GPL-2.0
|
||||
+ *
|
||||
@@ -8513,8 +8513,8 @@
|
||||
+ return ret;
|
||||
+}
|
||||
+#endif
|
||||
--- /dev/null 2018-02-18 13:06:28.903837808 +0200
|
||||
+++ b/net/wireguard/crypto/blake2s.c 2018-02-18 22:22:31.000000000 +0200
|
||||
--- /dev/null 2018-03-04 21:55:12.891724619 +0200
|
||||
+++ b/net/wireguard/crypto/blake2s.c 2018-03-04 19:51:33.000000000 +0200
|
||||
@@ -0,0 +1,294 @@
|
||||
+/* SPDX-License-Identifier: GPL-2.0
|
||||
+ *
|
||||
@@ -8631,8 +8631,8 @@
|
||||
+#include <asm/processor.h>
|
||||
+#include <asm/fpu/api.h>
|
||||
+#include <asm/simd.h>
|
||||
+static bool blake2s_use_avx __read_mostly;
|
||||
+static bool blake2s_use_avx512 __read_mostly;
|
||||
+static bool blake2s_use_avx __ro_after_init;
|
||||
+static bool blake2s_use_avx512 __ro_after_init;
|
||||
+void __init blake2s_fpu_init(void)
|
||||
+{
|
||||
+#ifndef CONFIG_UML
|
||||
@@ -8810,8 +8810,8 @@
|
||||
+}
|
||||
+
|
||||
+#include "../selftest/blake2s.h"
|
||||
--- /dev/null 2018-02-18 13:06:28.903837808 +0200
|
||||
+++ b/net/wireguard/crypto/chacha20poly1305.c 2018-02-18 22:22:31.000000000 +0200
|
||||
--- /dev/null 2018-03-04 21:55:12.891724619 +0200
|
||||
+++ b/net/wireguard/crypto/chacha20poly1305.c 2018-03-04 19:51:33.000000000 +0200
|
||||
@@ -0,0 +1,852 @@
|
||||
+/* SPDX-License-Identifier: OpenSSL OR (BSD-3-Clause OR GPL-2.0)
|
||||
+ *
|
||||
@@ -8853,11 +8853,11 @@
|
||||
+asmlinkage void poly1305_blocks_avx512(void *ctx, const u8 *inp, size_t len, u32 padbit);
|
||||
+#endif
|
||||
+
|
||||
+static bool chacha20poly1305_use_ssse3 __read_mostly;
|
||||
+static bool chacha20poly1305_use_avx __read_mostly;
|
||||
+static bool chacha20poly1305_use_avx2 __read_mostly;
|
||||
+static bool chacha20poly1305_use_avx512 __read_mostly;
|
||||
+static bool chacha20poly1305_use_avx512vl __read_mostly;
|
||||
+static bool chacha20poly1305_use_ssse3 __ro_after_init;
|
||||
+static bool chacha20poly1305_use_avx __ro_after_init;
|
||||
+static bool chacha20poly1305_use_avx2 __ro_after_init;
|
||||
+static bool chacha20poly1305_use_avx512 __ro_after_init;
|
||||
+static bool chacha20poly1305_use_avx512vl __ro_after_init;
|
||||
+
|
||||
+void __init chacha20poly1305_fpu_init(void)
|
||||
+{
|
||||
@@ -8889,7 +8889,7 @@
|
||||
+asmlinkage void poly1305_emit_neon(void *ctx, u8 mac[16], const u32 nonce[4]);
|
||||
+asmlinkage void chacha20_neon(u8 *out, const u8 *in, size_t len, const u32 key[8], const u32 counter[4]);
|
||||
+#endif
|
||||
+static bool chacha20poly1305_use_neon __read_mostly;
|
||||
+static bool chacha20poly1305_use_neon __ro_after_init;
|
||||
+void __init chacha20poly1305_fpu_init(void)
|
||||
+{
|
||||
+#if defined(CONFIG_ARM64)
|
||||
@@ -9665,8 +9665,8 @@
|
||||
+
|
||||
+#include "../selftest/chacha20poly1305.h"
|
||||
+#include "../selftest/poly1305.h"
|
||||
--- /dev/null 2018-02-18 13:06:28.903837808 +0200
|
||||
+++ b/net/wireguard/crypto/curve25519.c 2018-02-18 22:22:31.000000000 +0200
|
||||
--- /dev/null 2018-03-04 21:55:12.891724619 +0200
|
||||
+++ b/net/wireguard/crypto/curve25519.c 2018-03-04 19:51:33.000000000 +0200
|
||||
@@ -0,0 +1,81 @@
|
||||
+/* SPDX-License-Identifier: GPL-2.0
|
||||
+ *
|
||||
@@ -9749,8 +9749,8 @@
|
||||
+}
|
||||
+
|
||||
+#include "../selftest/curve25519.h"
|
||||
--- /dev/null 2018-02-18 13:06:28.903837808 +0200
|
||||
+++ b/net/wireguard/crypto/blake2s.h 2018-02-18 22:22:31.000000000 +0200
|
||||
--- /dev/null 2018-03-04 21:55:12.891724619 +0200
|
||||
+++ b/net/wireguard/crypto/blake2s.h 2018-03-04 19:51:33.000000000 +0200
|
||||
@@ -0,0 +1,94 @@
|
||||
+/* SPDX-License-Identifier: GPL-2.0
|
||||
+ *
|
||||
@@ -9846,8 +9846,8 @@
|
||||
+#endif
|
||||
+
|
||||
+#endif /* _WG_BLAKE2S_H */
|
||||
--- /dev/null 2018-02-18 13:06:28.903837808 +0200
|
||||
+++ b/net/wireguard/crypto/chacha20poly1305.h 2018-02-18 22:22:31.000000000 +0200
|
||||
--- /dev/null 2018-03-04 21:55:12.891724619 +0200
|
||||
+++ b/net/wireguard/crypto/chacha20poly1305.h 2018-03-04 19:51:33.000000000 +0200
|
||||
@@ -0,0 +1,93 @@
|
||||
+/* SPDX-License-Identifier: GPL-2.0
|
||||
+ *
|
||||
@@ -9942,8 +9942,8 @@
|
||||
+#endif
|
||||
+
|
||||
+#endif /* _WG_CHACHA20POLY1305_H */
|
||||
--- /dev/null 2018-02-18 13:06:28.903837808 +0200
|
||||
+++ b/net/wireguard/crypto/curve25519-arm.h 2018-02-18 22:22:31.000000000 +0200
|
||||
--- /dev/null 2018-03-04 21:55:12.891724619 +0200
|
||||
+++ b/net/wireguard/crypto/curve25519-arm.h 2018-03-04 19:51:33.000000000 +0200
|
||||
@@ -0,0 +1,14 @@
|
||||
+/* SPDX-License-Identifier: GPL-2.0
|
||||
+ *
|
||||
@@ -9954,13 +9954,13 @@
|
||||
+#include <asm/neon.h>
|
||||
+#include <asm/simd.h>
|
||||
+asmlinkage void curve25519_neon(u8 mypublic[CURVE25519_POINT_SIZE], const u8 secret[CURVE25519_POINT_SIZE], const u8 basepoint[CURVE25519_POINT_SIZE]);
|
||||
+static bool curve25519_use_neon __read_mostly;
|
||||
+static bool curve25519_use_neon __ro_after_init;
|
||||
+void __init curve25519_fpu_init(void)
|
||||
+{
|
||||
+ curve25519_use_neon = elf_hwcap & HWCAP_NEON;
|
||||
+}
|
||||
--- /dev/null 2018-02-18 13:06:28.903837808 +0200
|
||||
+++ b/net/wireguard/crypto/curve25519-fiat32.h 2018-02-18 22:22:31.000000000 +0200
|
||||
--- /dev/null 2018-03-04 21:55:12.891724619 +0200
|
||||
+++ b/net/wireguard/crypto/curve25519-fiat32.h 2018-03-04 19:51:33.000000000 +0200
|
||||
@@ -0,0 +1,838 @@
|
||||
+/* SPDX-License-Identifier: GPL-2.0
|
||||
+ *
|
||||
@@ -10800,8 +10800,8 @@
|
||||
+ memzero_explicit(&tmp1l, sizeof(tmp1l));
|
||||
+ memzero_explicit(&e, sizeof(e));
|
||||
+}
|
||||
--- /dev/null 2018-02-18 13:06:28.903837808 +0200
|
||||
+++ b/net/wireguard/crypto/curve25519.h 2018-02-18 22:22:31.000000000 +0200
|
||||
--- /dev/null 2018-03-04 21:55:12.891724619 +0200
|
||||
+++ b/net/wireguard/crypto/curve25519.h 2018-03-04 19:51:33.000000000 +0200
|
||||
@@ -0,0 +1,25 @@
|
||||
+/* SPDX-License-Identifier: GPL-2.0
|
||||
+ *
|
||||
@@ -10828,8 +10828,8 @@
|
||||
+#endif
|
||||
+
|
||||
+#endif /* _WG_CURVE25519_H */
|
||||
--- /dev/null 2018-02-18 13:06:28.903837808 +0200
|
||||
+++ b/net/wireguard/crypto/curve25519-hacl64.h 2018-02-18 22:22:31.000000000 +0200
|
||||
--- /dev/null 2018-03-04 21:55:12.891724619 +0200
|
||||
+++ b/net/wireguard/crypto/curve25519-hacl64.h 2018-03-04 19:51:33.000000000 +0200
|
||||
@@ -0,0 +1,751 @@
|
||||
+/* SPDX-License-Identifier: GPL-2.0
|
||||
+ *
|
||||
@@ -11582,9 +11582,9 @@
|
||||
+ }
|
||||
+ memzero_explicit(buf0, sizeof(buf0));
|
||||
+}
|
||||
--- /dev/null 2018-02-18 13:06:28.903837808 +0200
|
||||
+++ b/net/wireguard/crypto/curve25519-x86_64.h 2018-02-18 22:22:31.000000000 +0200
|
||||
@@ -0,0 +1,175 @@
|
||||
--- /dev/null 2018-03-04 21:55:12.891724619 +0200
|
||||
+++ b/net/wireguard/crypto/curve25519-x86_64.h 2018-03-04 19:51:33.000000000 +0200
|
||||
@@ -0,0 +1,176 @@
|
||||
+/* SPDX-License-Identifier: GPL-2.0
|
||||
+ *
|
||||
+ * Copyright (C) 2015-2018 Jason A. Donenfeld <Jason@zx2c4.com>. All Rights Reserved.
|
||||
@@ -11596,7 +11596,8 @@
|
||||
+#include <asm/processor.h>
|
||||
+#include <asm/fpu/api.h>
|
||||
+#include <asm/simd.h>
|
||||
+static bool curve25519_use_avx __read_mostly;
|
||||
+
|
||||
+static bool curve25519_use_avx __ro_after_init;
|
||||
+void __init curve25519_fpu_init(void)
|
||||
+{
|
||||
+#ifndef CONFIG_UML
|
||||
@@ -11760,8 +11761,8 @@
|
||||
+ memzero_explicit(x_51, sizeof(x_51));
|
||||
+ memzero_explicit(z_51, sizeof(z_51));
|
||||
+}
|
||||
--- /dev/null 2018-02-18 13:06:28.903837808 +0200
|
||||
+++ b/net/wireguard/crypto/blake2s-x86_64.S 2018-02-18 22:22:31.000000000 +0200
|
||||
--- /dev/null 2018-03-04 21:55:12.891724619 +0200
|
||||
+++ b/net/wireguard/crypto/blake2s-x86_64.S 2018-03-04 19:51:33.000000000 +0200
|
||||
@@ -0,0 +1,685 @@
|
||||
+/* SPDX-License-Identifier: GPL-2.0
|
||||
+ *
|
||||
@@ -12448,8 +12449,8 @@
|
||||
+ retq
|
||||
+ENDPROC(blake2s_compress_avx512)
|
||||
+#endif /* CONFIG_AS_AVX512 */
|
||||
--- /dev/null 2018-02-18 13:06:28.903837808 +0200
|
||||
+++ b/net/wireguard/crypto/chacha20-arm64.S 2018-02-18 22:22:31.000000000 +0200
|
||||
--- /dev/null 2018-03-04 21:55:12.891724619 +0200
|
||||
+++ b/net/wireguard/crypto/chacha20-arm64.S 2018-03-04 19:51:33.000000000 +0200
|
||||
@@ -0,0 +1,1940 @@
|
||||
+/* SPDX-License-Identifier: OpenSSL OR (BSD-3-Clause OR GPL-2.0)
|
||||
+ *
|
||||
@@ -14391,8 +14392,8 @@
|
||||
+.Labort_neon:
|
||||
+ ret
|
||||
+ENDPROC(chacha20_neon)
|
||||
--- /dev/null 2018-02-18 13:06:28.903837808 +0200
|
||||
+++ b/net/wireguard/crypto/chacha20-arm.S 2018-02-18 22:22:31.000000000 +0200
|
||||
--- /dev/null 2018-03-04 21:55:12.891724619 +0200
|
||||
+++ b/net/wireguard/crypto/chacha20-arm.S 2018-03-04 19:51:33.000000000 +0200
|
||||
@@ -0,0 +1,1471 @@
|
||||
+/* SPDX-License-Identifier: OpenSSL OR (BSD-3-Clause OR GPL-2.0)
|
||||
+ *
|
||||
@@ -15865,8 +15866,8 @@
|
||||
+.Lno_data_arm:
|
||||
+ ldmia sp!,{r4-r11,pc}
|
||||
+ENDPROC(chacha20_arm)
|
||||
--- /dev/null 2018-02-18 13:06:28.903837808 +0200
|
||||
+++ b/net/wireguard/crypto/chacha20-x86_64.S 2018-02-18 22:22:31.000000000 +0200
|
||||
--- /dev/null 2018-03-04 21:55:12.891724619 +0200
|
||||
+++ b/net/wireguard/crypto/chacha20-x86_64.S 2018-03-04 19:51:33.000000000 +0200
|
||||
@@ -0,0 +1,2630 @@
|
||||
+/* SPDX-License-Identifier: OpenSSL OR (BSD-3-Clause OR GPL-2.0)
|
||||
+ *
|
||||
@@ -18498,8 +18499,8 @@
|
||||
+ENDPROC(chacha20_avx512vl)
|
||||
+
|
||||
+#endif /* CONFIG_AS_AVX512 */
|
||||
--- /dev/null 2018-02-18 13:06:28.903837808 +0200
|
||||
+++ b/net/wireguard/crypto/curve25519-arm.S 2018-02-18 22:22:31.000000000 +0200
|
||||
--- /dev/null 2018-03-04 21:55:12.891724619 +0200
|
||||
+++ b/net/wireguard/crypto/curve25519-arm.S 2018-03-04 19:51:33.000000000 +0200
|
||||
@@ -0,0 +1,2110 @@
|
||||
+/* SPDX-License-Identifier: GPL-2.0
|
||||
+ *
|
||||
@@ -20611,8 +20612,8 @@
|
||||
+ bx lr
|
||||
+ENDPROC(curve25519_neon)
|
||||
+#endif
|
||||
--- /dev/null 2018-02-18 13:06:28.903837808 +0200
|
||||
+++ b/net/wireguard/crypto/curve25519-x86_64.S 2018-02-18 22:22:31.000000000 +0200
|
||||
--- /dev/null 2018-03-04 21:55:12.891724619 +0200
|
||||
+++ b/net/wireguard/crypto/curve25519-x86_64.S 2018-03-04 19:51:33.000000000 +0200
|
||||
@@ -0,0 +1,3261 @@
|
||||
+/* SPDX-License-Identifier: GPL-2.0
|
||||
+ *
|
||||
@@ -23875,8 +23876,8 @@
|
||||
+ ret
|
||||
+ENDPROC(curve25519_sandy2x_ladder_base)
|
||||
+#endif /* CONFIG_AS_AVX */
|
||||
--- /dev/null 2018-02-18 13:06:28.903837808 +0200
|
||||
+++ b/net/wireguard/crypto/poly1305-arm64.S 2018-02-18 22:22:31.000000000 +0200
|
||||
--- /dev/null 2018-03-04 21:55:12.891724619 +0200
|
||||
+++ b/net/wireguard/crypto/poly1305-arm64.S 2018-03-04 19:51:33.000000000 +0200
|
||||
@@ -0,0 +1,820 @@
|
||||
+/* SPDX-License-Identifier: OpenSSL OR (BSD-3-Clause OR GPL-2.0)
|
||||
+ *
|
||||
@@ -24698,8 +24699,8 @@
|
||||
+.align 5
|
||||
+.Lzeros:
|
||||
+.long 0,0,0,0,0,0,0,0
|
||||
--- /dev/null 2018-02-18 13:06:28.903837808 +0200
|
||||
+++ b/net/wireguard/crypto/poly1305-arm.S 2018-02-18 22:22:31.000000000 +0200
|
||||
--- /dev/null 2018-03-04 21:55:12.891724619 +0200
|
||||
+++ b/net/wireguard/crypto/poly1305-arm.S 2018-03-04 19:51:33.000000000 +0200
|
||||
@@ -0,0 +1,1115 @@
|
||||
+/* SPDX-License-Identifier: OpenSSL OR (BSD-3-Clause OR GPL-2.0)
|
||||
+ *
|
||||
@@ -25816,8 +25817,8 @@
|
||||
+.Lzeros:
|
||||
+.long 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
+#endif
|
||||
--- /dev/null 2018-02-18 13:06:28.903837808 +0200
|
||||
+++ b/net/wireguard/crypto/poly1305-mips64.S 2018-02-18 22:22:31.000000000 +0200
|
||||
--- /dev/null 2018-03-04 21:55:12.891724619 +0200
|
||||
+++ b/net/wireguard/crypto/poly1305-mips64.S 2018-03-04 19:51:33.000000000 +0200
|
||||
@@ -0,0 +1,357 @@
|
||||
+/* SPDX-License-Identifier: OpenSSL OR (BSD-3-Clause OR GPL-2.0)
|
||||
+ *
|
||||
@@ -26176,8 +26177,8 @@
|
||||
+
|
||||
+ jr $31
|
||||
+.end poly1305_emit_mips
|
||||
--- /dev/null 2018-02-18 13:06:28.903837808 +0200
|
||||
+++ b/net/wireguard/crypto/poly1305-x86_64.S 2018-02-18 22:22:31.000000000 +0200
|
||||
--- /dev/null 2018-03-04 21:55:12.891724619 +0200
|
||||
+++ b/net/wireguard/crypto/poly1305-x86_64.S 2018-03-04 19:51:33.000000000 +0200
|
||||
@@ -0,0 +1,2803 @@
|
||||
+/* SPDX-License-Identifier: OpenSSL OR (BSD-3-Clause OR GPL-2.0)
|
||||
+ *
|
||||
@@ -28982,8 +28983,8 @@
|
||||
+
|
||||
+ENDPROC(poly1305_blocks_avx512)
|
||||
+#endif /* CONFIG_AS_AVX512 */
|
||||
--- /dev/null 2018-02-18 13:06:28.903837808 +0200
|
||||
+++ b/net/wireguard/Makefile 2018-02-18 22:22:31.000000000 +0200
|
||||
--- /dev/null 2018-03-04 21:55:12.891724619 +0200
|
||||
+++ b/net/wireguard/Makefile 2018-03-04 19:51:33.000000000 +0200
|
||||
@@ -0,0 +1,19 @@
|
||||
+# SPDX-License-Identifier: GPL-2.0
|
||||
+#
|
||||
@@ -29004,13 +29005,14 @@
|
||||
+include $(src)/compat/Makefile.include
|
||||
+
|
||||
+obj-$(if $(KBUILD_EXTMOD),m,$(CONFIG_WIREGUARD)) := wireguard.o
|
||||
--- /dev/null 2018-02-18 13:06:28.903837808 +0200
|
||||
+++ b/net/wireguard/Kconfig 2018-02-18 22:22:31.000000000 +0200
|
||||
@@ -0,0 +1,30 @@
|
||||
--- /dev/null 2018-03-04 21:55:12.891724619 +0200
|
||||
+++ b/net/wireguard/Kconfig 2018-03-04 19:51:33.000000000 +0200
|
||||
@@ -0,0 +1,31 @@
|
||||
+config WIREGUARD
|
||||
+ tristate "IP: WireGuard secure network tunnel"
|
||||
+ depends on NET && INET
|
||||
+ select NET_UDP_TUNNEL
|
||||
+ select DST_CACHE
|
||||
+ select CRYPTO_BLKCIPHER
|
||||
+ select VFP
|
||||
+ select VFPv3
|
||||
@@ -29037,12 +29039,12 @@
|
||||
+ only useful for debugging.
|
||||
+
|
||||
+ Say N here unless you know what you're doing.
|
||||
--- /dev/null 2018-02-18 13:06:28.903837808 +0200
|
||||
+++ b/net/wireguard/compat/simd/include/asm/simd.h 2018-02-18 22:22:31.000000000 +0200
|
||||
--- /dev/null 2018-03-04 21:55:12.891724619 +0200
|
||||
+++ b/net/wireguard/compat/simd/include/asm/simd.h 2018-03-04 19:51:33.000000000 +0200
|
||||
@@ -0,0 +1 @@
|
||||
+#include <asm/i387.h>
|
||||
--- /dev/null 2018-02-18 13:06:28.903837808 +0200
|
||||
+++ b/net/wireguard/compat/udp_tunnel/udp_tunnel_partial_compat.h 2018-02-18 22:22:31.000000000 +0200
|
||||
--- /dev/null 2018-03-04 21:55:12.891724619 +0200
|
||||
+++ b/net/wireguard/compat/udp_tunnel/udp_tunnel_partial_compat.h 2018-03-04 19:51:33.000000000 +0200
|
||||
@@ -0,0 +1,226 @@
|
||||
+/* SPDX-License-Identifier: GPL-2.0
|
||||
+ *
|
||||
@@ -29270,8 +29272,8 @@
|
||||
+#define udp_port_cfg udp_port_cfg_new
|
||||
+#define udp_sock_create(a, b, c) udp_sock_create_new(a, b, c)
|
||||
+#endif
|
||||
--- /dev/null 2018-02-18 13:06:28.903837808 +0200
|
||||
+++ b/net/wireguard/compat/udp_tunnel/include/net/udp_tunnel.h 2018-02-18 22:22:31.000000000 +0200
|
||||
--- /dev/null 2018-03-04 21:55:12.891724619 +0200
|
||||
+++ b/net/wireguard/compat/udp_tunnel/include/net/udp_tunnel.h 2018-03-04 19:51:33.000000000 +0200
|
||||
@@ -0,0 +1,94 @@
|
||||
+#ifndef _WG_NET_UDP_TUNNEL_H
|
||||
+#define _WG_NET_UDP_TUNNEL_H
|
||||
@@ -29367,8 +29369,8 @@
|
||||
+void udp_tunnel_sock_release(struct socket *sock);
|
||||
+
|
||||
+#endif /* _WG_NET_UDP_TUNNEL_H */
|
||||
--- /dev/null 2018-02-18 13:06:28.903837808 +0200
|
||||
+++ b/net/wireguard/compat/udp_tunnel/udp_tunnel.c 2018-02-18 22:22:31.000000000 +0200
|
||||
--- /dev/null 2018-03-04 21:55:12.891724619 +0200
|
||||
+++ b/net/wireguard/compat/udp_tunnel/udp_tunnel.c 2018-03-04 19:51:33.000000000 +0200
|
||||
@@ -0,0 +1,385 @@
|
||||
+#include <linux/module.h>
|
||||
+#include <linux/errno.h>
|
||||
@@ -29755,12 +29757,12 @@
|
||||
+ return 0;
|
||||
+}
|
||||
+#endif
|
||||
--- /dev/null 2018-02-18 13:06:28.903837808 +0200
|
||||
+++ b/net/wireguard/compat/fpu/include/asm/fpu/api.h 2018-02-18 22:22:31.000000000 +0200
|
||||
--- /dev/null 2018-03-04 21:55:12.891724619 +0200
|
||||
+++ b/net/wireguard/compat/fpu/include/asm/fpu/api.h 2018-03-04 19:51:33.000000000 +0200
|
||||
@@ -0,0 +1 @@
|
||||
+#include <asm/i387.h>
|
||||
--- /dev/null 2018-02-18 13:06:28.903837808 +0200
|
||||
+++ b/net/wireguard/compat/checksum/checksum_partial_compat.h 2018-02-18 22:22:31.000000000 +0200
|
||||
--- /dev/null 2018-03-04 21:55:12.891724619 +0200
|
||||
+++ b/net/wireguard/compat/checksum/checksum_partial_compat.h 2018-03-04 19:51:33.000000000 +0200
|
||||
@@ -0,0 +1,208 @@
|
||||
+/* SPDX-License-Identifier: GPL-2.0
|
||||
+ *
|
||||
@@ -29970,21 +29972,22 @@
|
||||
+ }
|
||||
+ return err;
|
||||
+}
|
||||
--- /dev/null 2018-02-18 13:06:28.903837808 +0200
|
||||
+++ b/net/wireguard/compat/Makefile.include 2018-02-18 22:22:31.000000000 +0200
|
||||
@@ -0,0 +1,70 @@
|
||||
--- /dev/null 2018-03-04 21:55:12.891724619 +0200
|
||||
+++ b/net/wireguard/compat/Makefile.include 2018-03-04 19:51:33.000000000 +0200
|
||||
@@ -0,0 +1,71 @@
|
||||
+# SPDX-License-Identifier: GPL-2.0
|
||||
+#
|
||||
+# Copyright (C) 2015-2018 Jason A. Donenfeld <Jason@zx2c4.com>. All Rights Reserved.
|
||||
+
|
||||
+ifeq ($(wildcard $(src)/compat/compat.h),)
|
||||
+ccflags-y += -include $(srctree)/$(src)/compat/compat.h
|
||||
+asflags-y += -include $(srctree)/$(src)/compat/compat-asm.h
|
||||
+cmd_include_path_prefix := $(srctree)/$(src)
|
||||
+else
|
||||
+ccflags-y += -include $(src)/compat/compat.h
|
||||
+asflags-y += -include $(src)/compat/compat-asm.h
|
||||
+cmd_include_path_prefix := $(src)
|
||||
+endif
|
||||
+
|
||||
+ccflags-y += -include $(cmd_include_path_prefix)/compat/compat.h
|
||||
+asflags-y += -include $(cmd_include_path_prefix)/compat/compat-asm.h
|
||||
+
|
||||
+ifeq ($(wildcard $(srctree)/include/linux/ptr_ring.h),)
|
||||
+ccflags-y += -I$(src)/compat/ptr_ring/include
|
||||
+endif
|
||||
@@ -30017,7 +30020,7 @@
|
||||
+endif
|
||||
+
|
||||
+ifeq ($(shell grep -F "int crypto_memneq" "$(srctree)/include/crypto/algapi.h"),)
|
||||
+ccflags-y += -include $(src)/compat/memneq/include.h
|
||||
+ccflags-y += -include $(cmd_include_path_prefix)/compat/memneq/include.h
|
||||
+wireguard-y += compat/memneq/memneq.o
|
||||
+endif
|
||||
+
|
||||
@@ -30043,8 +30046,8 @@
|
||||
+ asflags-y += $(avx512_instr)
|
||||
+ endif
|
||||
+endif
|
||||
--- /dev/null 2018-02-18 13:06:28.903837808 +0200
|
||||
+++ b/net/wireguard/compat/siphash/siphash.c 2018-02-18 22:22:31.000000000 +0200
|
||||
--- /dev/null 2018-03-04 21:55:12.891724619 +0200
|
||||
+++ b/net/wireguard/compat/siphash/siphash.c 2018-03-04 19:51:33.000000000 +0200
|
||||
@@ -0,0 +1,539 @@
|
||||
+/* Copyright (C) 2015-2018 Jason A. Donenfeld <Jason@zx2c4.com>. All Rights Reserved.
|
||||
+ *
|
||||
@@ -30585,8 +30588,8 @@
|
||||
+ HPOSTAMBLE
|
||||
+}
|
||||
+#endif
|
||||
--- /dev/null 2018-02-18 13:06:28.903837808 +0200
|
||||
+++ b/net/wireguard/compat/siphash/include/linux/siphash.h 2018-02-18 22:22:31.000000000 +0200
|
||||
--- /dev/null 2018-03-04 21:55:12.891724619 +0200
|
||||
+++ b/net/wireguard/compat/siphash/include/linux/siphash.h 2018-03-04 19:51:33.000000000 +0200
|
||||
@@ -0,0 +1,140 @@
|
||||
+/* Copyright (C) 2015-2018 Jason A. Donenfeld <Jason@zx2c4.com>. All Rights Reserved.
|
||||
+ *
|
||||
@@ -30728,8 +30731,8 @@
|
||||
+}
|
||||
+
|
||||
+#endif /* _WG_LINUX_SIPHASH_H */
|
||||
--- /dev/null 2018-02-18 13:06:28.903837808 +0200
|
||||
+++ b/net/wireguard/compat/intel-family/include/asm/intel-family.h 2018-02-18 22:22:31.000000000 +0200
|
||||
--- /dev/null 2018-03-04 21:55:12.891724619 +0200
|
||||
+++ b/net/wireguard/compat/intel-family/include/asm/intel-family.h 2018-03-04 19:51:33.000000000 +0200
|
||||
@@ -0,0 +1,73 @@
|
||||
+/* SPDX-License-Identifier: GPL-2.0 */
|
||||
+#ifndef _ASM_X86_INTEL_FAMILY_H
|
||||
@@ -30804,8 +30807,8 @@
|
||||
+#define INTEL_FAM6_XEON_PHI_KNM 0x85 /* Knights Mill */
|
||||
+
|
||||
+#endif /* _ASM_X86_INTEL_FAMILY_H */
|
||||
--- /dev/null 2018-02-18 13:06:28.903837808 +0200
|
||||
+++ b/net/wireguard/compat/compat.h 2018-02-18 22:22:31.000000000 +0200
|
||||
--- /dev/null 2018-03-04 21:55:12.891724619 +0200
|
||||
+++ b/net/wireguard/compat/compat.h 2018-03-04 19:51:33.000000000 +0200
|
||||
@@ -0,0 +1,632 @@
|
||||
+/* SPDX-License-Identifier: GPL-2.0
|
||||
+ *
|
||||
@@ -31291,7 +31294,7 @@
|
||||
+#else
|
||||
+#define ___COMPAT_NETLINK_DUMP_BLOCK return get_device_dump_real(skb, cb);
|
||||
+#endif
|
||||
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(4, 13, 14) && LINUX_VERSION_CODE >= KERNEL_VERSION(4, 10, 0)) || LINUX_VERSION_CODE < KERNEL_VERSION(4, 9, 63)
|
||||
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 16, 0)
|
||||
+#define get_device_dump(a, b) get_device_dump_real(a, b); \
|
||||
+static int get_device_dump(a, b) { \
|
||||
+ struct wireguard_device *wg = (struct wireguard_device *)cb->args[0]; \
|
||||
@@ -31439,8 +31442,8 @@
|
||||
+#endif
|
||||
+
|
||||
+#endif /* _WG_COMPAT_H */
|
||||
--- /dev/null 2018-02-18 13:06:28.903837808 +0200
|
||||
+++ b/net/wireguard/compat/ptr_ring/include/linux/ptr_ring.h 2018-02-18 22:22:31.000000000 +0200
|
||||
--- /dev/null 2018-03-04 21:55:12.891724619 +0200
|
||||
+++ b/net/wireguard/compat/ptr_ring/include/linux/ptr_ring.h 2018-03-04 19:51:33.000000000 +0200
|
||||
@@ -0,0 +1,640 @@
|
||||
+/*
|
||||
+ * Definitions for the 'struct ptr_ring' datastructure.
|
||||
@@ -32082,16 +32085,16 @@
|
||||
+}
|
||||
+
|
||||
+#endif /* _LINUX_PTR_RING_H */
|
||||
--- /dev/null 2018-02-18 13:06:28.903837808 +0200
|
||||
+++ b/net/wireguard/compat/memneq/include.h 2018-02-18 22:22:31.000000000 +0200
|
||||
--- /dev/null 2018-03-04 21:55:12.891724619 +0200
|
||||
+++ b/net/wireguard/compat/memneq/include.h 2018-03-04 19:51:33.000000000 +0200
|
||||
@@ -0,0 +1,5 @@
|
||||
+extern noinline unsigned long __crypto_memneq(const void *a, const void *b, size_t size);
|
||||
+static inline int crypto_memneq(const void *a, const void *b, size_t size)
|
||||
+{
|
||||
+ return __crypto_memneq(a, b, size) != 0UL ? 1 : 0;
|
||||
+}
|
||||
--- /dev/null 2018-02-18 13:06:28.903837808 +0200
|
||||
+++ b/net/wireguard/compat/memneq/memneq.c 2018-02-18 22:22:31.000000000 +0200
|
||||
--- /dev/null 2018-03-04 21:55:12.891724619 +0200
|
||||
+++ b/net/wireguard/compat/memneq/memneq.c 2018-03-04 19:51:33.000000000 +0200
|
||||
@@ -0,0 +1,170 @@
|
||||
+/*
|
||||
+ * Constant-time equality testing of memory regions.
|
||||
@@ -32157,7 +32160,7 @@
|
||||
+#include <crypto/algapi.h>
|
||||
+
|
||||
+/* Make the optimizer believe the variable can be manipulated arbitrarily. */
|
||||
+#define COMPILER_OPTIMIZER_HIDE_VAR(var) __asm__ ("" : "=r" (var) : "0" (var))
|
||||
+#define COMPILER_OPTIMIZER_HIDE_VAR(var) asm("" : "=r" (var) : "0" (var))
|
||||
+
|
||||
+#ifndef __HAVE_ARCH_CRYPTO_MEMNEQ
|
||||
+
|
||||
@@ -32263,8 +32266,8 @@
|
||||
+}
|
||||
+
|
||||
+#endif /* __HAVE_ARCH_CRYPTO_MEMNEQ */
|
||||
--- /dev/null 2018-02-18 13:06:28.903837808 +0200
|
||||
+++ b/net/wireguard/compat/dst_cache/dst_cache.c 2018-02-18 22:22:31.000000000 +0200
|
||||
--- /dev/null 2018-03-04 21:55:12.891724619 +0200
|
||||
+++ b/net/wireguard/compat/dst_cache/dst_cache.c 2018-03-04 19:51:33.000000000 +0200
|
||||
@@ -0,0 +1,175 @@
|
||||
+/*
|
||||
+ * net/core/dst_cache.c - dst entry cache
|
||||
@@ -32441,8 +32444,8 @@
|
||||
+
|
||||
+ free_percpu(dst_cache->cache);
|
||||
+}
|
||||
--- /dev/null 2018-02-18 13:06:28.903837808 +0200
|
||||
+++ b/net/wireguard/compat/dst_cache/include/net/dst_cache.h 2018-02-18 22:22:31.000000000 +0200
|
||||
--- /dev/null 2018-03-04 21:55:12.891724619 +0200
|
||||
+++ b/net/wireguard/compat/dst_cache/include/net/dst_cache.h 2018-03-04 19:51:33.000000000 +0200
|
||||
@@ -0,0 +1,97 @@
|
||||
+#ifndef _WG_NET_DST_CACHE_H
|
||||
+#define _WG_NET_DST_CACHE_H
|
||||
@@ -32541,8 +32544,8 @@
|
||||
+void dst_cache_destroy(struct dst_cache *dst_cache);
|
||||
+
|
||||
+#endif /* _WG_NET_DST_CACHE_H */
|
||||
--- /dev/null 2018-02-18 13:06:28.903837808 +0200
|
||||
+++ b/net/wireguard/compat/compat-asm.h 2018-02-18 22:22:31.000000000 +0200
|
||||
--- /dev/null 2018-03-04 21:55:12.891724619 +0200
|
||||
+++ b/net/wireguard/compat/compat-asm.h 2018-03-04 19:51:33.000000000 +0200
|
||||
@@ -0,0 +1,18 @@
|
||||
+/* SPDX-License-Identifier: GPL-2.0
|
||||
+ *
|
||||
|
||||
+84
@@ -0,0 +1,84 @@
|
||||
From 57ebd808a97d7c5b1e1afb937c2db22beba3c1f8 Mon Sep 17 00:00:00 2001
|
||||
From: Florian Westphal <fw@strlen.de>
|
||||
Date: Wed, 7 Feb 2018 13:46:25 +0100
|
||||
Subject: [PATCH] netfilter: add back stackpointer size checks
|
||||
|
||||
The rationale for removing the check is only correct for rulesets
|
||||
generated by ip(6)tables.
|
||||
|
||||
In iptables, a jump can only occur to a user-defined chain, i.e.
|
||||
because we size the stack based on number of user-defined chains we
|
||||
cannot exceed stack size.
|
||||
|
||||
However, the underlying binary format has no such restriction,
|
||||
and the validation step only ensures that the jump target is a
|
||||
valid rule start point.
|
||||
|
||||
IOW, its possible to build a rule blob that has no user-defined
|
||||
chains but does contain a jump.
|
||||
|
||||
If this happens, no jump stack gets allocated and crash occurs
|
||||
because no jumpstack was allocated.
|
||||
|
||||
Fixes: 7814b6ec6d0d6 ("netfilter: xtables: don't save/restore jumpstack offset")
|
||||
Reported-by: syzbot+e783f671527912cd9403@syzkaller.appspotmail.com
|
||||
Signed-off-by: Florian Westphal <fw@strlen.de>
|
||||
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
|
||||
---
|
||||
net/ipv4/netfilter/arp_tables.c | 4 ++++
|
||||
net/ipv4/netfilter/ip_tables.c | 7 ++++++-
|
||||
net/ipv6/netfilter/ip6_tables.c | 4 ++++
|
||||
3 files changed, 14 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/net/ipv4/netfilter/arp_tables.c b/net/ipv4/netfilter/arp_tables.c
|
||||
index 4ffe302f9b82..e3e420f3ba7b 100644
|
||||
--- a/net/ipv4/netfilter/arp_tables.c
|
||||
+++ b/net/ipv4/netfilter/arp_tables.c
|
||||
@@ -252,6 +252,10 @@ unsigned int arpt_do_table(struct sk_buff *skb,
|
||||
}
|
||||
if (table_base + v
|
||||
!= arpt_next_entry(e)) {
|
||||
+ if (unlikely(stackidx >= private->stacksize)) {
|
||||
+ verdict = NF_DROP;
|
||||
+ break;
|
||||
+ }
|
||||
jumpstack[stackidx++] = e;
|
||||
}
|
||||
|
||||
diff --git a/net/ipv4/netfilter/ip_tables.c b/net/ipv4/netfilter/ip_tables.c
|
||||
index 9a71f3149507..e38395a8dcf2 100644
|
||||
--- a/net/ipv4/netfilter/ip_tables.c
|
||||
+++ b/net/ipv4/netfilter/ip_tables.c
|
||||
@@ -330,8 +330,13 @@ ipt_do_table(struct sk_buff *skb,
|
||||
continue;
|
||||
}
|
||||
if (table_base + v != ipt_next_entry(e) &&
|
||||
- !(e->ip.flags & IPT_F_GOTO))
|
||||
+ !(e->ip.flags & IPT_F_GOTO)) {
|
||||
+ if (unlikely(stackidx >= private->stacksize)) {
|
||||
+ verdict = NF_DROP;
|
||||
+ break;
|
||||
+ }
|
||||
jumpstack[stackidx++] = e;
|
||||
+ }
|
||||
|
||||
e = get_entry(table_base, v);
|
||||
continue;
|
||||
diff --git a/net/ipv6/netfilter/ip6_tables.c b/net/ipv6/netfilter/ip6_tables.c
|
||||
index af4c917e0836..62358b93bbac 100644
|
||||
--- a/net/ipv6/netfilter/ip6_tables.c
|
||||
+++ b/net/ipv6/netfilter/ip6_tables.c
|
||||
@@ -352,6 +352,10 @@ ip6t_do_table(struct sk_buff *skb,
|
||||
}
|
||||
if (table_base + v != ip6t_next_entry(e) &&
|
||||
!(e->ipv6.flags & IP6T_F_GOTO)) {
|
||||
+ if (unlikely(stackidx >= private->stacksize)) {
|
||||
+ verdict = NF_DROP;
|
||||
+ break;
|
||||
+ }
|
||||
jumpstack[stackidx++] = e;
|
||||
}
|
||||
|
||||
--
|
||||
2.16.2
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
+2
-2
@@ -1,7 +1,7 @@
|
||||
From 3b7711fd3adb7d6b812a33da4a4639ddce6522b6 Mon Sep 17 00:00:00 2001
|
||||
From: Joerg Roedel <jroedel@suse.de>
|
||||
Date: Fri, 19 Jan 2018 13:46:20 +0100
|
||||
Subject: [PATCH 01/31] x86/asm-offsets: Move TSS_sp0 and TSS_sp1 to
|
||||
Subject: [PATCH 01/34] x86/asm-offsets: Move TSS_sp0 and TSS_sp1 to
|
||||
asm-offsets.c
|
||||
|
||||
These offsets will be used in 32 bit assembly code as well,
|
||||
@@ -40,5 +40,5 @@ index bf51e51d808d..d2eba73a5f8a 100644
|
||||
|
||||
#ifdef CONFIG_CC_STACKPROTECTOR
|
||||
--
|
||||
2.13.6
|
||||
2.16.2
|
||||
|
||||
|
||||
+2
-2
@@ -1,7 +1,7 @@
|
||||
From 52806123bdb0b558a5b4fbfa132bae32e53b008a Mon Sep 17 00:00:00 2001
|
||||
From: Joerg Roedel <jroedel@suse.de>
|
||||
Date: Mon, 15 Jan 2018 18:20:15 +0100
|
||||
Subject: [PATCH 02/31] x86/entry/32: Rename TSS_sysenter_sp0 to
|
||||
Subject: [PATCH 02/34] x86/entry/32: Rename TSS_sysenter_sp0 to
|
||||
TSS_entry_stack
|
||||
|
||||
The stack address doesn't need to be stored in tss.sp0 if
|
||||
@@ -44,5 +44,5 @@ index fa1261eefa16..f452bfdc485a 100644
|
||||
|
||||
#ifdef CONFIG_CC_STACKPROTECTOR
|
||||
--
|
||||
2.13.6
|
||||
2.16.2
|
||||
|
||||
|
||||
+2
-2
@@ -1,7 +1,7 @@
|
||||
From b696a2c46d9b9937b816b11ff2ec72aa0b65f204 Mon Sep 17 00:00:00 2001
|
||||
From: Joerg Roedel <jroedel@suse.de>
|
||||
Date: Fri, 19 Jan 2018 13:33:37 +0100
|
||||
Subject: [PATCH 03/31] x86/entry/32: Load task stack from x86_tss.sp1 in
|
||||
Subject: [PATCH 03/34] x86/entry/32: Load task stack from x86_tss.sp1 in
|
||||
SYSENTER handler
|
||||
|
||||
We want x86_tss.sp0 point to the entry stack later to use
|
||||
@@ -45,5 +45,5 @@ index 5224c6099184..097d36a64889 100644
|
||||
/*
|
||||
* Restore %gs if needed (which is common)
|
||||
--
|
||||
2.13.6
|
||||
2.16.2
|
||||
|
||||
|
||||
+2
-2
@@ -1,7 +1,7 @@
|
||||
From 7c97243c7694dc1c0e0ad73bc17bdc2c553225ac Mon Sep 17 00:00:00 2001
|
||||
From: Joerg Roedel <jroedel@suse.de>
|
||||
Date: Wed, 31 Jan 2018 10:50:02 +0100
|
||||
Subject: [PATCH 04/31] x86/entry/32: Put ESPFIX code into a macro
|
||||
Subject: [PATCH 04/34] x86/entry/32: Put ESPFIX code into a macro
|
||||
|
||||
This makes it easier to split up the shared iret code path.
|
||||
|
||||
@@ -133,5 +133,5 @@ index e65977615616..0289bde37a08 100644
|
||||
|
||||
.macro FIXUP_ESPFIX_STACK
|
||||
--
|
||||
2.13.6
|
||||
2.16.2
|
||||
|
||||
|
||||
+2
-2
@@ -1,7 +1,7 @@
|
||||
From c66ec22d03296d1311197aaef753c1c320eed225 Mon Sep 17 00:00:00 2001
|
||||
From: Joerg Roedel <jroedel@suse.de>
|
||||
Date: Wed, 31 Jan 2018 10:58:38 +0100
|
||||
Subject: [PATCH 05/31] x86/entry/32: Unshare NMI return path
|
||||
Subject: [PATCH 05/34] x86/entry/32: Unshare NMI return path
|
||||
|
||||
NMI will no longer use most of the shared return path,
|
||||
because NMI needs special handling when the CR3 switches for
|
||||
@@ -39,5 +39,5 @@ index 0289bde37a08..00ae759a7c44 100644
|
||||
#ifdef CONFIG_X86_ESPFIX32
|
||||
.Lnmi_espfix_stack:
|
||||
--
|
||||
2.13.6
|
||||
2.16.2
|
||||
|
||||
|
||||
+2
-2
@@ -1,7 +1,7 @@
|
||||
From 916e5e906873de859d8a87c1ffb0323e167d1a44 Mon Sep 17 00:00:00 2001
|
||||
From: Joerg Roedel <jroedel@suse.de>
|
||||
Date: Wed, 31 Jan 2018 11:07:32 +0100
|
||||
Subject: [PATCH 06/31] x86/entry/32: Split off return-to-kernel path
|
||||
Subject: [PATCH 06/34] x86/entry/32: Split off return-to-kernel path
|
||||
|
||||
Use a separate return path when we know we are returning to
|
||||
the kernel. This allows us to put the PTI cr3-switch and the
|
||||
@@ -51,5 +51,5 @@ index 00ae759a7c44..9bd77183965f 100644
|
||||
ENTRY(iret_exc )
|
||||
pushl $0 # no error code
|
||||
--
|
||||
2.13.6
|
||||
2.16.2
|
||||
|
||||
|
||||
+6
-6
@@ -1,7 +1,7 @@
|
||||
From c19ad15b16ec8908794459f28b44eca889a925f7 Mon Sep 17 00:00:00 2001
|
||||
From: Joerg Roedel <jroedel@suse.de>
|
||||
Date: Wed, 31 Jan 2018 11:29:59 +0100
|
||||
Subject: [PATCH 07/31] x86/entry/32: Restore segments before int registers
|
||||
Subject: [PATCH 07/34] x86/entry/32: Restore segments before int registers
|
||||
|
||||
Restoring the segments can cause exceptions that need to be
|
||||
handled. With PTI enabled, we still need to be on kernel cr3
|
||||
@@ -27,18 +27,18 @@ diff --git a/arch/x86/entry/entry_32.S b/arch/x86/entry/entry_32.S
|
||||
index 9bd77183965f..b39c5e210b43 100644
|
||||
--- a/arch/x86/entry/entry_32.S
|
||||
+++ b/arch/x86/entry/entry_32.S
|
||||
@@ -92,11 +92,6 @@
|
||||
@@ -91,11 +91,6 @@
|
||||
/* unfortunately push/pop can't be no-op */
|
||||
.macro PUSH_GS
|
||||
pushl $0
|
||||
.endm
|
||||
-.endm
|
||||
-.macro POP_GS pop=0
|
||||
- addl $(4 + \pop), %esp
|
||||
-.endm
|
||||
-.macro POP_GS_EX
|
||||
-.endm
|
||||
.endm
|
||||
|
||||
/* all the rest are no-op */
|
||||
.macro PTGS_TO_GS
|
||||
@@ -116,20 +111,6 @@
|
||||
pushl %gs
|
||||
.endm
|
||||
@@ -107,5 +107,5 @@ index 9bd77183965f..b39c5e210b43 100644
|
||||
|
||||
.macro CHECK_AND_APPLY_ESPFIX
|
||||
--
|
||||
2.13.6
|
||||
2.16.2
|
||||
|
||||
|
||||
+19
-18
@@ -1,7 +1,7 @@
|
||||
From d9dc2b83bdfc2a9265302cc90b32739ac579f8cc Mon Sep 17 00:00:00 2001
|
||||
From 288a2a6b31018ab9172598a39477404582ae29fa Mon Sep 17 00:00:00 2001
|
||||
From: Joerg Roedel <jroedel@suse.de>
|
||||
Date: Tue, 16 Jan 2018 10:55:52 +0100
|
||||
Subject: [PATCH 08/31] x86/entry/32: Enter the kernel via trampoline stack
|
||||
Subject: [PATCH 08/34] x86/entry/32: Enter the kernel via trampoline stack
|
||||
|
||||
Use the entry-stack as a trampoline to enter the kernel. The
|
||||
entry-stack is already in the cpu_entry_area and will be
|
||||
@@ -9,16 +9,16 @@ mapped to userspace when PTI is enabled.
|
||||
|
||||
Signed-off-by: Joerg Roedel <jroedel@suse.de>
|
||||
---
|
||||
arch/x86/entry/entry_32.S | 135 +++++++++++++++++++++++++++++++--------
|
||||
arch/x86/entry/entry_32.S | 136 +++++++++++++++++++++++++++++++--------
|
||||
arch/x86/include/asm/switch_to.h | 6 +-
|
||||
arch/x86/kernel/asm-offsets.c | 1 +
|
||||
arch/x86/kernel/cpu/common.c | 5 +-
|
||||
arch/x86/kernel/process.c | 2 -
|
||||
arch/x86/kernel/process_32.c | 10 +--
|
||||
6 files changed, 120 insertions(+), 39 deletions(-)
|
||||
6 files changed, 121 insertions(+), 39 deletions(-)
|
||||
|
||||
diff --git a/arch/x86/entry/entry_32.S b/arch/x86/entry/entry_32.S
|
||||
index b39c5e210b43..e714b53b1eaa 100644
|
||||
index b39c5e210b43..1737da2e4517 100644
|
||||
--- a/arch/x86/entry/entry_32.S
|
||||
+++ b/arch/x86/entry/entry_32.S
|
||||
@@ -135,25 +135,36 @@
|
||||
@@ -65,7 +65,7 @@ index b39c5e210b43..e714b53b1eaa 100644
|
||||
.endm
|
||||
|
||||
/*
|
||||
@@ -261,6 +272,71 @@
|
||||
@@ -261,6 +272,72 @@
|
||||
.Lend_\@:
|
||||
#endif /* CONFIG_X86_ESPFIX32 */
|
||||
.endm
|
||||
@@ -128,8 +128,9 @@ index b39c5e210b43..e714b53b1eaa 100644
|
||||
+ * We are now on the task-stack and can safely copy over the
|
||||
+ * stack-frame
|
||||
+ */
|
||||
+ shrl $2, %ecx
|
||||
+ cld
|
||||
+ rep movsb
|
||||
+ rep movsl
|
||||
+
|
||||
+.Lend_\@:
|
||||
+.endm
|
||||
@@ -137,7 +138,7 @@ index b39c5e210b43..e714b53b1eaa 100644
|
||||
/*
|
||||
* %eax: prev task
|
||||
* %edx: next task
|
||||
@@ -454,6 +530,7 @@ ENTRY(xen_sysenter_target)
|
||||
@@ -454,6 +531,7 @@ ENTRY(xen_sysenter_target)
|
||||
*/
|
||||
ENTRY(entry_SYSENTER_32)
|
||||
movl TSS_entry_stack(%esp), %esp
|
||||
@@ -145,7 +146,7 @@ index b39c5e210b43..e714b53b1eaa 100644
|
||||
.Lsysenter_past_esp:
|
||||
pushl $__USER_DS /* pt_regs->ss */
|
||||
pushl %ebp /* pt_regs->sp (stashed in bp) */
|
||||
@@ -462,7 +539,7 @@ ENTRY(entry_SYSENTER_32)
|
||||
@@ -462,7 +540,7 @@ ENTRY(entry_SYSENTER_32)
|
||||
pushl $__USER_CS /* pt_regs->cs */
|
||||
pushl $0 /* pt_regs->ip = 0 (placeholder) */
|
||||
pushl %eax /* pt_regs->orig_ax */
|
||||
@@ -154,7 +155,7 @@ index b39c5e210b43..e714b53b1eaa 100644
|
||||
|
||||
/*
|
||||
* SYSENTER doesn't filter flags, so we need to clear NT, AC
|
||||
@@ -573,7 +650,8 @@ ENDPROC(entry_SYSENTER_32)
|
||||
@@ -573,7 +651,8 @@ ENDPROC(entry_SYSENTER_32)
|
||||
ENTRY(entry_INT80_32)
|
||||
ASM_CLAC
|
||||
pushl %eax /* pt_regs->orig_ax */
|
||||
@@ -164,7 +165,7 @@ index b39c5e210b43..e714b53b1eaa 100644
|
||||
|
||||
/*
|
||||
* User mode is traced as though IRQs are on, and the interrupt gate
|
||||
@@ -665,7 +743,8 @@ END(irq_entries_start)
|
||||
@@ -665,7 +744,8 @@ END(irq_entries_start)
|
||||
common_interrupt:
|
||||
ASM_CLAC
|
||||
addl $-0x80, (%esp) /* Adjust vector into the [-256, -1] range */
|
||||
@@ -174,7 +175,7 @@ index b39c5e210b43..e714b53b1eaa 100644
|
||||
ENCODE_FRAME_POINTER
|
||||
TRACE_IRQS_OFF
|
||||
movl %esp, %eax
|
||||
@@ -673,16 +752,16 @@ common_interrupt:
|
||||
@@ -673,16 +753,16 @@ common_interrupt:
|
||||
jmp ret_from_intr
|
||||
ENDPROC(common_interrupt)
|
||||
|
||||
@@ -201,7 +202,7 @@ index b39c5e210b43..e714b53b1eaa 100644
|
||||
ENDPROC(name)
|
||||
|
||||
#define BUILD_INTERRUPT(name, nr) \
|
||||
@@ -908,16 +987,20 @@ common_exception:
|
||||
@@ -908,16 +988,20 @@ common_exception:
|
||||
pushl %es
|
||||
pushl %ds
|
||||
pushl %eax
|
||||
@@ -224,7 +225,7 @@ index b39c5e210b43..e714b53b1eaa 100644
|
||||
UNWIND_ESPFIX_STACK
|
||||
GS_TO_REG %ecx
|
||||
movl PT_GS(%esp), %edi # get the function address
|
||||
@@ -925,9 +1008,6 @@ common_exception:
|
||||
@@ -925,9 +1009,6 @@ common_exception:
|
||||
movl $-1, PT_ORIG_EAX(%esp) # no syscall to restart
|
||||
REG_TO_PTGS %ecx
|
||||
SET_KERNEL_GS %ecx
|
||||
@@ -234,7 +235,7 @@ index b39c5e210b43..e714b53b1eaa 100644
|
||||
TRACE_IRQS_OFF
|
||||
movl %esp, %eax # pt_regs pointer
|
||||
CALL_NOSPEC %edi
|
||||
@@ -946,6 +1026,7 @@ ENTRY(debug)
|
||||
@@ -946,6 +1027,7 @@ ENTRY(debug)
|
||||
*/
|
||||
ASM_CLAC
|
||||
pushl $-1 # mark this as an int
|
||||
@@ -242,7 +243,7 @@ index b39c5e210b43..e714b53b1eaa 100644
|
||||
SAVE_ALL
|
||||
ENCODE_FRAME_POINTER
|
||||
xorl %edx, %edx # error code 0
|
||||
@@ -981,6 +1062,7 @@ END(debug)
|
||||
@@ -981,6 +1063,7 @@ END(debug)
|
||||
*/
|
||||
ENTRY(nmi)
|
||||
ASM_CLAC
|
||||
@@ -250,7 +251,7 @@ index b39c5e210b43..e714b53b1eaa 100644
|
||||
#ifdef CONFIG_X86_ESPFIX32
|
||||
pushl %eax
|
||||
movl %ss, %eax
|
||||
@@ -1048,7 +1130,8 @@ END(nmi)
|
||||
@@ -1048,7 +1131,8 @@ END(nmi)
|
||||
ENTRY(int3)
|
||||
ASM_CLAC
|
||||
pushl $-1 # mark this as an int
|
||||
@@ -351,5 +352,5 @@ index 097d36a64889..3f3a8c620c63 100644
|
||||
|
||||
/*
|
||||
--
|
||||
2.13.6
|
||||
2.16.2
|
||||
|
||||
|
||||
+57
-16
@@ -1,29 +1,30 @@
|
||||
From 4a06e416cfe4d173f8ed65799e112f77ecb12be8 Mon Sep 17 00:00:00 2001
|
||||
From af8c0db250e710c6ecd19a83bd8b57da44662041 Mon Sep 17 00:00:00 2001
|
||||
From: Joerg Roedel <jroedel@suse.de>
|
||||
Date: Tue, 16 Jan 2018 11:28:30 +0100
|
||||
Subject: [PATCH 09/31] x86/entry/32: Leave the kernel via trampoline stack
|
||||
Subject: [PATCH 09/34] x86/entry/32: Leave the kernel via trampoline stack
|
||||
|
||||
Switch back to the trampoline stack before returning to
|
||||
userspace.
|
||||
|
||||
Signed-off-by: Joerg Roedel <jroedel@suse.de>
|
||||
---
|
||||
arch/x86/entry/entry_32.S | 55 +++++++++++++++++++++++++++++++++++++++++++++++
|
||||
1 file changed, 55 insertions(+)
|
||||
arch/x86/entry/entry_32.S | 79 +++++++++++++++++++++++++++++++++++++++++++++--
|
||||
1 file changed, 77 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/arch/x86/entry/entry_32.S b/arch/x86/entry/entry_32.S
|
||||
index e714b53b1eaa..ba3d8c2886ed 100644
|
||||
index 1737da2e4517..1b5656d7040e 100644
|
||||
--- a/arch/x86/entry/entry_32.S
|
||||
+++ b/arch/x86/entry/entry_32.S
|
||||
@@ -338,6 +338,59 @@
|
||||
@@ -338,6 +338,60 @@
|
||||
.Lend_\@:
|
||||
.endm
|
||||
|
||||
/*
|
||||
+/*
|
||||
+ * Switch back from the kernel stack to the entry stack.
|
||||
+ *
|
||||
+ * The %esp register must point to pt_regs on the task stack. It will
|
||||
+ * first calculate the size of the stack-frame to copy, depending on
|
||||
+ * whether we return to VM86 mode or not. With that it uses 'rep movsb'
|
||||
+ * whether we return to VM86 mode or not. With that it uses 'rep movsl'
|
||||
+ * to copy the contents of the stack over to the entry stack.
|
||||
+ *
|
||||
+ * We must be very careful here, as we can't trust the contents of the
|
||||
@@ -55,11 +56,12 @@ index e714b53b1eaa..ba3d8c2886ed 100644
|
||||
+ movl %esp, %esi
|
||||
+
|
||||
+ /* Save future stack pointer in %ebx */
|
||||
+ movl %edi, %ebx
|
||||
+ movl %edi, %ebx
|
||||
+
|
||||
+ /* Copy over the stack-frame */
|
||||
+ shrl $2, %ecx
|
||||
+ cld
|
||||
+ rep movsb
|
||||
+ rep movsl
|
||||
+
|
||||
+ /*
|
||||
+ * Switch to entry-stack - needs to happen after everything is
|
||||
@@ -71,19 +73,58 @@ index e714b53b1eaa..ba3d8c2886ed 100644
|
||||
+.Lend_\@:
|
||||
+.endm
|
||||
+
|
||||
+/*
|
||||
/*
|
||||
* %eax: prev task
|
||||
* %edx: next task
|
||||
*/
|
||||
@@ -578,6 +631,7 @@ ENTRY(entry_SYSENTER_32)
|
||||
@@ -579,25 +633,45 @@ ENTRY(entry_SYSENTER_32)
|
||||
|
||||
/* Opportunistic SYSEXIT */
|
||||
TRACE_IRQS_ON /* User mode traces as IRQs on. */
|
||||
+ SWITCH_TO_ENTRY_STACK /* Switch to per-cpu entry stack */
|
||||
+
|
||||
+ /*
|
||||
+ * Setup entry stack - we keep the pointer in %eax and do the
|
||||
+ * switch after almost all user-state is restored.
|
||||
+ */
|
||||
+
|
||||
+ /* Load entry stack pointer and allocate frame for eflags/eax */
|
||||
+ movl PER_CPU_VAR(cpu_tss_rw + TSS_sp0), %eax
|
||||
+ subl $(2*4), %eax
|
||||
+
|
||||
+ /* Copy eflags and eax to entry stack */
|
||||
+ movl PT_EFLAGS(%esp), %edi
|
||||
+ movl PT_EAX(%esp), %esi
|
||||
+ movl %edi, (%eax)
|
||||
+ movl %esi, 4(%eax)
|
||||
+
|
||||
+ /* Restore user registers and segments */
|
||||
movl PT_EIP(%esp), %edx /* pt_regs->ip */
|
||||
movl PT_OLDESP(%esp), %ecx /* pt_regs->sp */
|
||||
1: mov PT_FS(%esp), %fs
|
||||
@@ -665,6 +719,7 @@ ENTRY(entry_INT80_32)
|
||||
PTGS_TO_GS
|
||||
+
|
||||
popl %ebx /* pt_regs->bx */
|
||||
addl $2*4, %esp /* skip pt_regs->cx and pt_regs->dx */
|
||||
popl %esi /* pt_regs->si */
|
||||
popl %edi /* pt_regs->di */
|
||||
popl %ebp /* pt_regs->bp */
|
||||
- popl %eax /* pt_regs->ax */
|
||||
+
|
||||
+ /* Switch to entry stack */
|
||||
+ movl %eax, %esp
|
||||
|
||||
/*
|
||||
* Restore all flags except IF. (We restore IF separately because
|
||||
* STI gives a one-instruction window in which we won't be interrupted,
|
||||
* whereas POPF does not.)
|
||||
*/
|
||||
- addl $PT_EFLAGS-PT_DS, %esp /* point esp at pt_regs->flags */
|
||||
btr $X86_EFLAGS_IF_BIT, (%esp)
|
||||
popfl
|
||||
+ popl %eax
|
||||
|
||||
/*
|
||||
* Return back to the vDSO, which will pop ecx and edx.
|
||||
@@ -666,6 +740,7 @@ ENTRY(entry_INT80_32)
|
||||
|
||||
restore_all:
|
||||
TRACE_IRQS_IRET
|
||||
@@ -92,5 +133,5 @@ index e714b53b1eaa..ba3d8c2886ed 100644
|
||||
CHECK_AND_APPLY_ESPFIX
|
||||
.Lrestore_nocheck:
|
||||
--
|
||||
2.13.6
|
||||
2.16.2
|
||||
|
||||
|
||||
+7
-7
@@ -1,7 +1,7 @@
|
||||
From 26b38ec7dd2591f092eb359a5a59752d799ab60d Mon Sep 17 00:00:00 2001
|
||||
From 49a15ace3cbe2fba45548538ede04c1599b33fb9 Mon Sep 17 00:00:00 2001
|
||||
From: Joerg Roedel <jroedel@suse.de>
|
||||
Date: Wed, 31 Jan 2018 16:35:42 +0100
|
||||
Subject: [PATCH 10/31] x86/entry/32: Introduce SAVE_ALL_NMI and
|
||||
Subject: [PATCH 10/34] x86/entry/32: Introduce SAVE_ALL_NMI and
|
||||
RESTORE_ALL_NMI
|
||||
|
||||
These macros will be used in the NMI handler code and
|
||||
@@ -14,7 +14,7 @@ Signed-off-by: Joerg Roedel <jroedel@suse.de>
|
||||
1 file changed, 19 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/arch/x86/entry/entry_32.S b/arch/x86/entry/entry_32.S
|
||||
index ba3d8c2886ed..be1d814bd056 100644
|
||||
index 1b5656d7040e..bb0bd896c74b 100644
|
||||
--- a/arch/x86/entry/entry_32.S
|
||||
+++ b/arch/x86/entry/entry_32.S
|
||||
@@ -167,6 +167,9 @@
|
||||
@@ -46,7 +46,7 @@ index ba3d8c2886ed..be1d814bd056 100644
|
||||
.macro CHECK_AND_APPLY_ESPFIX
|
||||
#ifdef CONFIG_X86_ESPFIX32
|
||||
#define GDT_ESPFIX_SS PER_CPU_VAR(gdt_page) + (GDT_ENTRY_ESPFIX_SS * 8)
|
||||
@@ -1127,7 +1142,7 @@ ENTRY(nmi)
|
||||
@@ -1148,7 +1163,7 @@ ENTRY(nmi)
|
||||
#endif
|
||||
|
||||
pushl %eax # pt_regs->orig_ax
|
||||
@@ -55,7 +55,7 @@ index ba3d8c2886ed..be1d814bd056 100644
|
||||
ENCODE_FRAME_POINTER
|
||||
xorl %edx, %edx # zero error code
|
||||
movl %esp, %eax # pt_regs pointer
|
||||
@@ -1155,7 +1170,7 @@ ENTRY(nmi)
|
||||
@@ -1176,7 +1191,7 @@ ENTRY(nmi)
|
||||
|
||||
.Lnmi_return:
|
||||
CHECK_AND_APPLY_ESPFIX
|
||||
@@ -64,7 +64,7 @@ index ba3d8c2886ed..be1d814bd056 100644
|
||||
jmp .Lirq_return
|
||||
|
||||
#ifdef CONFIG_X86_ESPFIX32
|
||||
@@ -1171,12 +1186,12 @@ ENTRY(nmi)
|
||||
@@ -1192,12 +1207,12 @@ ENTRY(nmi)
|
||||
pushl 16(%esp)
|
||||
.endr
|
||||
pushl %eax
|
||||
@@ -80,5 +80,5 @@ index ba3d8c2886ed..be1d814bd056 100644
|
||||
jmp .Lirq_return
|
||||
#endif
|
||||
--
|
||||
2.13.6
|
||||
2.16.2
|
||||
|
||||
|
||||
+18
-17
@@ -1,7 +1,7 @@
|
||||
From a98c3fa3166e37c6f66f5b7e221b9c0cf1455806 Mon Sep 17 00:00:00 2001
|
||||
From bbad1145165d4ed4452913df109ee3429a10dd90 Mon Sep 17 00:00:00 2001
|
||||
From: Joerg Roedel <jroedel@suse.de>
|
||||
Date: Wed, 31 Jan 2018 20:48:02 +0100
|
||||
Subject: [PATCH 13/31] x86/entry/32: Handle Entry from Kernel-Mode on
|
||||
Subject: [PATCH 11/34] x86/entry/32: Handle Entry from Kernel-Mode on
|
||||
Entry-Stack
|
||||
|
||||
It can happen that we enter the kernel from kernel-mode and
|
||||
@@ -33,14 +33,14 @@ to it.
|
||||
|
||||
Signed-off-by: Joerg Roedel <jroedel@suse.de>
|
||||
---
|
||||
arch/x86/entry/entry_32.S | 109 +++++++++++++++++++++++++++++++++++++++++++++-
|
||||
1 file changed, 108 insertions(+), 1 deletion(-)
|
||||
arch/x86/entry/entry_32.S | 110 +++++++++++++++++++++++++++++++++++++++++++++-
|
||||
1 file changed, 109 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/arch/x86/entry/entry_32.S b/arch/x86/entry/entry_32.S
|
||||
index b5ef00302316..d94dab68b526 100644
|
||||
index bb0bd896c74b..3a84945fa3b6 100644
|
||||
--- a/arch/x86/entry/entry_32.S
|
||||
+++ b/arch/x86/entry/entry_32.S
|
||||
@@ -358,6 +358,9 @@
|
||||
@@ -299,6 +299,9 @@
|
||||
* copied there. So allocate the stack-frame on the task-stack and
|
||||
* switch to it before we do any copying.
|
||||
*/
|
||||
@@ -50,7 +50,7 @@ index b5ef00302316..d94dab68b526 100644
|
||||
.macro SWITCH_TO_KERNEL_STACK
|
||||
|
||||
ALTERNATIVE "", "jmp .Lend_\@", X86_FEATURE_XENPV
|
||||
@@ -381,6 +384,10 @@
|
||||
@@ -320,6 +323,10 @@
|
||||
/* Load top of task-stack into %edi */
|
||||
movl TSS_entry_stack(%edi), %edi
|
||||
|
||||
@@ -61,7 +61,7 @@ index b5ef00302316..d94dab68b526 100644
|
||||
/* Bytes to copy */
|
||||
movl $PTREGS_SIZE, %ecx
|
||||
|
||||
@@ -394,8 +401,8 @@
|
||||
@@ -333,8 +340,8 @@
|
||||
*/
|
||||
addl $(4 * 4), %ecx
|
||||
|
||||
@@ -71,9 +71,9 @@ index b5ef00302316..d94dab68b526 100644
|
||||
|
||||
/* Allocate frame on task-stack */
|
||||
subl %ecx, %edi
|
||||
@@ -410,6 +417,56 @@
|
||||
@@ -350,6 +357,56 @@
|
||||
cld
|
||||
rep movsb
|
||||
rep movsl
|
||||
|
||||
+ jmp .Lend_\@
|
||||
+
|
||||
@@ -128,10 +128,11 @@ index b5ef00302316..d94dab68b526 100644
|
||||
.Lend_\@:
|
||||
.endm
|
||||
|
||||
@@ -467,6 +524,55 @@
|
||||
@@ -407,6 +464,56 @@
|
||||
.Lend_\@:
|
||||
.endm
|
||||
|
||||
/*
|
||||
+/*
|
||||
+ * This macro handles the case when we return to kernel-mode on the iret
|
||||
+ * path and have to switch back to the entry stack.
|
||||
+ *
|
||||
@@ -172,19 +173,19 @@ index b5ef00302316..d94dab68b526 100644
|
||||
+ movl %edi, %ebx
|
||||
+
|
||||
+ /* Do the copy */
|
||||
+ shrl $2, %ecx
|
||||
+ cld
|
||||
+ rep movsb
|
||||
+ rep movsl
|
||||
+
|
||||
+ /* Safe to switch to entry-stack now */
|
||||
+ movl %ebx, %esp
|
||||
+
|
||||
+.Lend_\@:
|
||||
+.endm
|
||||
+/*
|
||||
/*
|
||||
* %eax: prev task
|
||||
* %edx: next task
|
||||
*/
|
||||
@@ -837,6 +943,7 @@ restore_all:
|
||||
@@ -765,6 +872,7 @@ restore_all:
|
||||
|
||||
restore_all_kernel:
|
||||
TRACE_IRQS_IRET
|
||||
@@ -193,5 +194,5 @@ index b5ef00302316..d94dab68b526 100644
|
||||
jmp .Lirq_return
|
||||
|
||||
--
|
||||
2.13.6
|
||||
2.16.2
|
||||
|
||||
-122
@@ -1,122 +0,0 @@
|
||||
From 883518e6e2b618c2ee49ac822057712090784eda Mon Sep 17 00:00:00 2001
|
||||
From: Joerg Roedel <jroedel@suse.de>
|
||||
Date: Wed, 31 Jan 2018 17:22:10 +0100
|
||||
Subject: [PATCH 12/31] x86/entry/32: Add PTI cr3 switch to non-NMI entry/exit
|
||||
points
|
||||
|
||||
Add unconditional cr3 switches between user and kernel cr3
|
||||
to all non-NMI entry and exit points.
|
||||
|
||||
Signed-off-by: Joerg Roedel <jroedel@suse.de>
|
||||
---
|
||||
arch/x86/entry/entry_32.S | 59 ++++++++++++++++++++++++++++++++++++++++++++++-
|
||||
1 file changed, 58 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/arch/x86/entry/entry_32.S b/arch/x86/entry/entry_32.S
|
||||
index 9693485c901a..b5ef00302316 100644
|
||||
--- a/arch/x86/entry/entry_32.S
|
||||
+++ b/arch/x86/entry/entry_32.S
|
||||
@@ -328,6 +328,25 @@
|
||||
#endif /* CONFIG_X86_ESPFIX32 */
|
||||
.endm
|
||||
|
||||
+/* Unconditionally switch to user cr3 */
|
||||
+.macro SWITCH_TO_USER_CR3 scratch_reg:req
|
||||
+ ALTERNATIVE "jmp .Lend_\@", "", X86_FEATURE_PTI
|
||||
+
|
||||
+ movl %cr3, \scratch_reg
|
||||
+ orl $PTI_SWITCH_MASK, \scratch_reg
|
||||
+ movl \scratch_reg, %cr3
|
||||
+.Lend_\@:
|
||||
+.endm
|
||||
+
|
||||
+/* Unconditionally switch to kernel cr3 */
|
||||
+.macro SWITCH_TO_KERNEL_CR3 scratch_reg:req
|
||||
+ ALTERNATIVE "jmp .Lend_\@", "", X86_FEATURE_PTI
|
||||
+ movl %cr3, \scratch_reg
|
||||
+ andl $(~PTI_SWITCH_MASK), \scratch_reg
|
||||
+ movl \scratch_reg, %cr3
|
||||
+.Lend_\@:
|
||||
+.endm
|
||||
+
|
||||
|
||||
/*
|
||||
* Called with pt_regs fully populated and kernel segments loaded,
|
||||
@@ -343,6 +362,8 @@
|
||||
|
||||
ALTERNATIVE "", "jmp .Lend_\@", X86_FEATURE_XENPV
|
||||
|
||||
+ SWITCH_TO_KERNEL_CR3 scratch_reg=%eax
|
||||
+
|
||||
/* Are we on the entry stack? Bail out if not! */
|
||||
movl PER_CPU_VAR(cpu_entry_area), %edi
|
||||
addl $CPU_ENTRY_AREA_entry_stack, %edi
|
||||
@@ -637,6 +658,18 @@ ENTRY(xen_sysenter_target)
|
||||
* 0(%ebp) arg6
|
||||
*/
|
||||
ENTRY(entry_SYSENTER_32)
|
||||
+ /*
|
||||
+ * On entry-stack with all userspace-regs live - save and
|
||||
+ * restore eflags and %eax to use it as scratch-reg for the cr3
|
||||
+ * switch.
|
||||
+ */
|
||||
+ pushfl
|
||||
+ pushl %eax
|
||||
+ SWITCH_TO_KERNEL_CR3 scratch_reg=%eax
|
||||
+ popl %eax
|
||||
+ popfl
|
||||
+
|
||||
+ /* Stack empty again, switch to task stack */
|
||||
movl TSS_entry_stack(%esp), %esp
|
||||
|
||||
.Lsysenter_past_esp:
|
||||
@@ -691,6 +724,10 @@ ENTRY(entry_SYSENTER_32)
|
||||
movl PT_OLDESP(%esp), %ecx /* pt_regs->sp */
|
||||
1: mov PT_FS(%esp), %fs
|
||||
PTGS_TO_GS
|
||||
+
|
||||
+ /* Segments are restored - switch to user cr3 */
|
||||
+ SWITCH_TO_USER_CR3 scratch_reg=%eax
|
||||
+
|
||||
popl %ebx /* pt_regs->bx */
|
||||
addl $2*4, %esp /* skip pt_regs->cx and pt_regs->dx */
|
||||
popl %esi /* pt_regs->si */
|
||||
@@ -778,7 +815,23 @@ restore_all:
|
||||
.Lrestore_all_notrace:
|
||||
CHECK_AND_APPLY_ESPFIX
|
||||
.Lrestore_nocheck:
|
||||
- RESTORE_REGS 4 # skip orig_eax/error_code
|
||||
+ /*
|
||||
+ * First restore user segments. This can cause exceptions, so we
|
||||
+ * run it with kernel cr3.
|
||||
+ */
|
||||
+ RESTORE_SEGMENTS
|
||||
+
|
||||
+ /*
|
||||
+ * Segments are restored - no more exceptions from here on except on
|
||||
+ * iret, but that handled safely.
|
||||
+ */
|
||||
+ SWITCH_TO_USER_CR3 scratch_reg=%eax
|
||||
+
|
||||
+ /* Restore rest */
|
||||
+ RESTORE_INT_REGS
|
||||
+
|
||||
+ /* Unwind stack to the iret frame */
|
||||
+ RESTORE_SKIP_SEGMENTS 4 # skip orig_eax/error_code
|
||||
.Lirq_return:
|
||||
INTERRUPT_RETURN
|
||||
|
||||
@@ -1139,6 +1192,10 @@ ENTRY(debug)
|
||||
|
||||
SAVE_ALL
|
||||
ENCODE_FRAME_POINTER
|
||||
+
|
||||
+ /* Make sure we are running on kernel cr3 */
|
||||
+ SWITCH_TO_KERNEL_CR3 scratch_reg=%eax
|
||||
+
|
||||
xorl %edx, %edx # error code 0
|
||||
movl %esp, %eax # pt_regs pointer
|
||||
|
||||
--
|
||||
2.13.6
|
||||
|
||||
+69
@@ -0,0 +1,69 @@
|
||||
From 8743506d5153928d0a0fb4106470a6581d03796d Mon Sep 17 00:00:00 2001
|
||||
From: Joerg Roedel <jroedel@suse.de>
|
||||
Date: Thu, 1 Mar 2018 14:48:16 +0100
|
||||
Subject: [PATCH 12/34] x86/entry/32: Simplify debug entry point
|
||||
|
||||
The common exception entry code now handles the
|
||||
entry-from-sysenter stack situation and makes sure to leave
|
||||
with the same stack as it entered the kernel.
|
||||
|
||||
So there is no need anymore for the special handling in the
|
||||
debug entry code.
|
||||
|
||||
Signed-off-by: Joerg Roedel <jroedel@suse.de>
|
||||
---
|
||||
arch/x86/entry/entry_32.S | 35 +++--------------------------------
|
||||
1 file changed, 3 insertions(+), 32 deletions(-)
|
||||
|
||||
diff --git a/arch/x86/entry/entry_32.S b/arch/x86/entry/entry_32.S
|
||||
index 3a84945fa3b6..b1a5f34eeb27 100644
|
||||
--- a/arch/x86/entry/entry_32.S
|
||||
+++ b/arch/x86/entry/entry_32.S
|
||||
@@ -1215,41 +1215,12 @@ END(common_exception)
|
||||
|
||||
ENTRY(debug)
|
||||
/*
|
||||
- * #DB can happen at the first instruction of
|
||||
- * entry_SYSENTER_32 or in Xen's SYSENTER prologue. If this
|
||||
- * happens, then we will be running on a very small stack. We
|
||||
- * need to detect this condition and switch to the thread
|
||||
- * stack before calling any C code at all.
|
||||
- *
|
||||
- * If you edit this code, keep in mind that NMIs can happen in here.
|
||||
+ * Entry from sysenter is now handled in common_exception
|
||||
*/
|
||||
ASM_CLAC
|
||||
pushl $-1 # mark this as an int
|
||||
-
|
||||
- SAVE_ALL
|
||||
- ENCODE_FRAME_POINTER
|
||||
- xorl %edx, %edx # error code 0
|
||||
- movl %esp, %eax # pt_regs pointer
|
||||
-
|
||||
- /* Are we currently on the SYSENTER stack? */
|
||||
- movl PER_CPU_VAR(cpu_entry_area), %ecx
|
||||
- addl $CPU_ENTRY_AREA_entry_stack + SIZEOF_entry_stack, %ecx
|
||||
- subl %eax, %ecx /* ecx = (end of entry_stack) - esp */
|
||||
- cmpl $SIZEOF_entry_stack, %ecx
|
||||
- jb .Ldebug_from_sysenter_stack
|
||||
-
|
||||
- TRACE_IRQS_OFF
|
||||
- call do_debug
|
||||
- jmp ret_from_exception
|
||||
-
|
||||
-.Ldebug_from_sysenter_stack:
|
||||
- /* We're on the SYSENTER stack. Switch off. */
|
||||
- movl %esp, %ebx
|
||||
- movl PER_CPU_VAR(cpu_current_top_of_stack), %esp
|
||||
- TRACE_IRQS_OFF
|
||||
- call do_debug
|
||||
- movl %ebx, %esp
|
||||
- jmp ret_from_exception
|
||||
+ pushl $do_debug
|
||||
+ jmp common_exception
|
||||
END(debug)
|
||||
|
||||
/*
|
||||
--
|
||||
2.16.2
|
||||
|
||||
+7
-7
@@ -1,7 +1,7 @@
|
||||
From d7f5719fe456d24dd01fdcc281aac44dacfa57b2 Mon Sep 17 00:00:00 2001
|
||||
From 41bc2c77864b5464134c3ec722225a9ae4701968 Mon Sep 17 00:00:00 2001
|
||||
From: Joerg Roedel <jroedel@suse.de>
|
||||
Date: Wed, 31 Jan 2018 16:58:57 +0100
|
||||
Subject: [PATCH 11/31] x86/entry/32: Add PTI cr3 switches to NMI handler code
|
||||
Subject: [PATCH 13/34] x86/entry/32: Add PTI cr3 switches to NMI handler code
|
||||
|
||||
The NMI handler is special, as it needs to leave with the
|
||||
same cr3 as it was entered with. We need to do this because
|
||||
@@ -14,7 +14,7 @@ Signed-off-by: Joerg Roedel <jroedel@suse.de>
|
||||
1 file changed, 46 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/arch/x86/entry/entry_32.S b/arch/x86/entry/entry_32.S
|
||||
index be1d814bd056..9693485c901a 100644
|
||||
index b1a5f34eeb27..35379e5f60c6 100644
|
||||
--- a/arch/x86/entry/entry_32.S
|
||||
+++ b/arch/x86/entry/entry_32.S
|
||||
@@ -77,6 +77,8 @@
|
||||
@@ -89,7 +89,7 @@ index be1d814bd056..9693485c901a 100644
|
||||
/* Restore integer registers and unwind stack to iret frame */
|
||||
RESTORE_INT_REGS
|
||||
RESTORE_SKIP_SEGMENTS \pop
|
||||
@@ -1142,7 +1182,7 @@ ENTRY(nmi)
|
||||
@@ -1242,7 +1282,7 @@ ENTRY(nmi)
|
||||
#endif
|
||||
|
||||
pushl %eax # pt_regs->orig_ax
|
||||
@@ -98,7 +98,7 @@ index be1d814bd056..9693485c901a 100644
|
||||
ENCODE_FRAME_POINTER
|
||||
xorl %edx, %edx # zero error code
|
||||
movl %esp, %eax # pt_regs pointer
|
||||
@@ -1170,7 +1210,7 @@ ENTRY(nmi)
|
||||
@@ -1270,7 +1310,7 @@ ENTRY(nmi)
|
||||
|
||||
.Lnmi_return:
|
||||
CHECK_AND_APPLY_ESPFIX
|
||||
@@ -107,7 +107,7 @@ index be1d814bd056..9693485c901a 100644
|
||||
jmp .Lirq_return
|
||||
|
||||
#ifdef CONFIG_X86_ESPFIX32
|
||||
@@ -1186,12 +1226,12 @@ ENTRY(nmi)
|
||||
@@ -1286,12 +1326,12 @@ ENTRY(nmi)
|
||||
pushl 16(%esp)
|
||||
.endr
|
||||
pushl %eax
|
||||
@@ -123,5 +123,5 @@ index be1d814bd056..9693485c901a 100644
|
||||
jmp .Lirq_return
|
||||
#endif
|
||||
--
|
||||
2.13.6
|
||||
2.16.2
|
||||
|
||||
+187
@@ -0,0 +1,187 @@
|
||||
From d40791fdb56c15767c7c65a1a2e0c8736f3db0af Mon Sep 17 00:00:00 2001
|
||||
From: Joerg Roedel <jroedel@suse.de>
|
||||
Date: Wed, 31 Jan 2018 17:22:10 +0100
|
||||
Subject: [PATCH 14/34] x86/entry/32: Add PTI cr3 switch to non-NMI entry/exit
|
||||
points
|
||||
|
||||
Add unconditional cr3 switches between user and kernel cr3
|
||||
to all non-NMI entry and exit points.
|
||||
|
||||
Signed-off-by: Joerg Roedel <jroedel@suse.de>
|
||||
---
|
||||
arch/x86/entry/entry_32.S | 91 +++++++++++++++++++++++++++++++++++++++++++++--
|
||||
1 file changed, 88 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/arch/x86/entry/entry_32.S b/arch/x86/entry/entry_32.S
|
||||
index 35379e5f60c6..8f78abcf1f9c 100644
|
||||
--- a/arch/x86/entry/entry_32.S
|
||||
+++ b/arch/x86/entry/entry_32.S
|
||||
@@ -328,6 +328,30 @@
|
||||
#endif /* CONFIG_X86_ESPFIX32 */
|
||||
.endm
|
||||
|
||||
+/* Unconditionally switch to user cr3 */
|
||||
+.macro SWITCH_TO_USER_CR3 scratch_reg:req
|
||||
+ ALTERNATIVE "jmp .Lend_\@", "", X86_FEATURE_PTI
|
||||
+
|
||||
+ movl %cr3, \scratch_reg
|
||||
+ orl $PTI_SWITCH_MASK, \scratch_reg
|
||||
+ movl \scratch_reg, %cr3
|
||||
+.Lend_\@:
|
||||
+.endm
|
||||
+
|
||||
+/* Unconditionally switch to kernel cr3 */
|
||||
+.macro SWITCH_TO_KERNEL_CR3 scratch_reg:req
|
||||
+ ALTERNATIVE "jmp .Lend_\@", "", X86_FEATURE_PTI
|
||||
+ movl %cr3, \scratch_reg
|
||||
+ /* Test if we are already on kernel CR3 */
|
||||
+ testl $PTI_SWITCH_MASK, \scratch_reg
|
||||
+ jz .Lend_\@
|
||||
+ andl $(~PTI_SWITCH_MASK), \scratch_reg
|
||||
+ movl \scratch_reg, %cr3
|
||||
+ /* Return original CR3 in \scratch_reg */
|
||||
+ orl $PTI_SWITCH_MASK, \scratch_reg
|
||||
+.Lend_\@:
|
||||
+.endm
|
||||
+
|
||||
|
||||
/*
|
||||
* Called with pt_regs fully populated and kernel segments loaded,
|
||||
@@ -341,11 +365,19 @@
|
||||
*/
|
||||
|
||||
#define CS_FROM_ENTRY_STACK (1 << 31)
|
||||
+#define CS_FROM_USER_CR3 (1 << 30)
|
||||
|
||||
.macro SWITCH_TO_KERNEL_STACK
|
||||
|
||||
ALTERNATIVE "", "jmp .Lend_\@", X86_FEATURE_XENPV
|
||||
|
||||
+ SWITCH_TO_KERNEL_CR3 scratch_reg=%eax
|
||||
+
|
||||
+ /*
|
||||
+ * %eax now contains the entry cr3 and we carry it forward in
|
||||
+ * that register for the time this macro runs
|
||||
+ */
|
||||
+
|
||||
/* Are we on the entry stack? Bail out if not! */
|
||||
movl PER_CPU_VAR(cpu_entry_area), %edi
|
||||
addl $CPU_ENTRY_AREA_entry_stack, %edi
|
||||
@@ -408,7 +440,8 @@
|
||||
* but switch back to the entry-stack again when we approach
|
||||
* iret and return to the interrupted code-path. This usually
|
||||
* happens when we hit an exception while restoring user-space
|
||||
- * segment registers on the way back to user-space.
|
||||
+ * segment registers on the way back to user-space or when the
|
||||
+ * sysenter handler runs with eflags.tf set.
|
||||
*
|
||||
* When we switch to the task-stack here, we can't trust the
|
||||
* contents of the entry-stack anymore, as the exception handler
|
||||
@@ -425,6 +458,7 @@
|
||||
*
|
||||
* %esi: Entry-Stack pointer (same as %esp)
|
||||
* %edi: Top of the task stack
|
||||
+ * %eax: CR3 on kernel entry
|
||||
*/
|
||||
|
||||
/* Calculate number of bytes on the entry stack in %ecx */
|
||||
@@ -440,6 +474,14 @@
|
||||
/* Mark stackframe as coming from entry stack */
|
||||
orl $CS_FROM_ENTRY_STACK, PT_CS(%esp)
|
||||
|
||||
+ /*
|
||||
+ * Test the cr3 used to enter the kernel and add a marker
|
||||
+ * so that we can switch back to it before iret.
|
||||
+ */
|
||||
+ testl $PTI_SWITCH_MASK, %eax
|
||||
+ jz .Lcopy_pt_regs_\@
|
||||
+ orl $CS_FROM_USER_CR3, PT_CS(%esp)
|
||||
+
|
||||
/*
|
||||
* %esi and %edi are unchanged, %ecx contains the number of
|
||||
* bytes to copy. The code at .Lcopy_pt_regs_\@ will allocate
|
||||
@@ -506,7 +548,7 @@
|
||||
|
||||
/*
|
||||
* This macro handles the case when we return to kernel-mode on the iret
|
||||
- * path and have to switch back to the entry stack.
|
||||
+ * path and have to switch back to the entry stack and/or user-cr3
|
||||
*
|
||||
* See the comments below the .Lentry_from_kernel_\@ label in the
|
||||
* SWITCH_TO_KERNEL_STACK macro for more details.
|
||||
@@ -552,6 +594,18 @@
|
||||
/* Safe to switch to entry-stack now */
|
||||
movl %ebx, %esp
|
||||
|
||||
+ /*
|
||||
+ * We came from entry-stack and need to check if we also need to
|
||||
+ * switch back to user cr3.
|
||||
+ */
|
||||
+ testl $CS_FROM_USER_CR3, PT_CS(%esp)
|
||||
+ jz .Lend_\@
|
||||
+
|
||||
+ /* Clear marker from stack-frame */
|
||||
+ andl $(~CS_FROM_USER_CR3), PT_CS(%esp)
|
||||
+
|
||||
+ SWITCH_TO_USER_CR3 scratch_reg=%eax
|
||||
+
|
||||
.Lend_\@:
|
||||
.endm
|
||||
/*
|
||||
@@ -746,6 +800,18 @@ ENTRY(xen_sysenter_target)
|
||||
* 0(%ebp) arg6
|
||||
*/
|
||||
ENTRY(entry_SYSENTER_32)
|
||||
+ /*
|
||||
+ * On entry-stack with all userspace-regs live - save and
|
||||
+ * restore eflags and %eax to use it as scratch-reg for the cr3
|
||||
+ * switch.
|
||||
+ */
|
||||
+ pushfl
|
||||
+ pushl %eax
|
||||
+ SWITCH_TO_KERNEL_CR3 scratch_reg=%eax
|
||||
+ popl %eax
|
||||
+ popfl
|
||||
+
|
||||
+ /* Stack empty again, switch to task stack */
|
||||
movl TSS_entry_stack(%esp), %esp
|
||||
|
||||
.Lsysenter_past_esp:
|
||||
@@ -826,6 +892,9 @@ ENTRY(entry_SYSENTER_32)
|
||||
/* Switch to entry stack */
|
||||
movl %eax, %esp
|
||||
|
||||
+ /* Now ready to switch the cr3 */
|
||||
+ SWITCH_TO_USER_CR3 scratch_reg=%eax
|
||||
+
|
||||
/*
|
||||
* Restore all flags except IF. (We restore IF separately because
|
||||
* STI gives a one-instruction window in which we won't be interrupted,
|
||||
@@ -906,7 +975,23 @@ restore_all:
|
||||
.Lrestore_all_notrace:
|
||||
CHECK_AND_APPLY_ESPFIX
|
||||
.Lrestore_nocheck:
|
||||
- RESTORE_REGS 4 # skip orig_eax/error_code
|
||||
+ /*
|
||||
+ * First restore user segments. This can cause exceptions, so we
|
||||
+ * run it with kernel cr3.
|
||||
+ */
|
||||
+ RESTORE_SEGMENTS
|
||||
+
|
||||
+ /*
|
||||
+ * Segments are restored - no more exceptions from here on except on
|
||||
+ * iret, but that handled safely.
|
||||
+ */
|
||||
+ SWITCH_TO_USER_CR3 scratch_reg=%eax
|
||||
+
|
||||
+ /* Restore rest */
|
||||
+ RESTORE_INT_REGS
|
||||
+
|
||||
+ /* Unwind stack to the iret frame */
|
||||
+ RESTORE_SKIP_SEGMENTS 4 # skip orig_eax/error_code
|
||||
.Lirq_return:
|
||||
INTERRUPT_RETURN
|
||||
|
||||
--
|
||||
2.16.2
|
||||
|
||||
+81
@@ -0,0 +1,81 @@
|
||||
From 55797d951b45c9eb709a4e7483eef89d738c2427 Mon Sep 17 00:00:00 2001
|
||||
From: Joerg Roedel <jroedel@suse.de>
|
||||
Date: Thu, 1 Mar 2018 13:40:39 +0100
|
||||
Subject: [PATCH 15/34] x86/pgtable: Rename pti_set_user_pgd to
|
||||
pti_set_user_pgtbl
|
||||
|
||||
With the way page-table folding is implemented on 32 bit, we
|
||||
are not only setting PGDs with this functions, but also PUDs
|
||||
and even PMDs. Give the function a more generic name to
|
||||
reflect that.
|
||||
|
||||
Signed-off-by: Joerg Roedel <jroedel@suse.de>
|
||||
---
|
||||
arch/x86/include/asm/pgtable_64.h | 12 ++++++------
|
||||
arch/x86/mm/pti.c | 2 +-
|
||||
2 files changed, 7 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/arch/x86/include/asm/pgtable_64.h b/arch/x86/include/asm/pgtable_64.h
|
||||
index 81462e9a34f6..b68bda56db67 100644
|
||||
--- a/arch/x86/include/asm/pgtable_64.h
|
||||
+++ b/arch/x86/include/asm/pgtable_64.h
|
||||
@@ -195,21 +195,21 @@ static inline bool pgdp_maps_userspace(void *__ptr)
|
||||
}
|
||||
|
||||
#ifdef CONFIG_PAGE_TABLE_ISOLATION
|
||||
-pgd_t __pti_set_user_pgd(pgd_t *pgdp, pgd_t pgd);
|
||||
+pgd_t __pti_set_user_pgtbl(pgd_t *pgdp, pgd_t pgd);
|
||||
|
||||
/*
|
||||
* Take a PGD location (pgdp) and a pgd value that needs to be set there.
|
||||
* Populates the user and returns the resulting PGD that must be set in
|
||||
* the kernel copy of the page tables.
|
||||
*/
|
||||
-static inline pgd_t pti_set_user_pgd(pgd_t *pgdp, pgd_t pgd)
|
||||
+static inline pgd_t pti_set_user_pgtbl(pgd_t *pgdp, pgd_t pgd)
|
||||
{
|
||||
if (!static_cpu_has(X86_FEATURE_PTI))
|
||||
return pgd;
|
||||
- return __pti_set_user_pgd(pgdp, pgd);
|
||||
+ return __pti_set_user_pgtbl(pgdp, pgd);
|
||||
}
|
||||
#else
|
||||
-static inline pgd_t pti_set_user_pgd(pgd_t *pgdp, pgd_t pgd)
|
||||
+static inline pgd_t pti_set_user_pgtbl(pgd_t *pgdp, pgd_t pgd)
|
||||
{
|
||||
return pgd;
|
||||
}
|
||||
@@ -218,7 +218,7 @@ static inline pgd_t pti_set_user_pgd(pgd_t *pgdp, pgd_t pgd)
|
||||
static inline void native_set_p4d(p4d_t *p4dp, p4d_t p4d)
|
||||
{
|
||||
#if defined(CONFIG_PAGE_TABLE_ISOLATION) && !defined(CONFIG_X86_5LEVEL)
|
||||
- p4dp->pgd = pti_set_user_pgd(&p4dp->pgd, p4d.pgd);
|
||||
+ p4dp->pgd = pti_set_user_pgtbl(&p4dp->pgd, p4d.pgd);
|
||||
#else
|
||||
*p4dp = p4d;
|
||||
#endif
|
||||
@@ -236,7 +236,7 @@ static inline void native_p4d_clear(p4d_t *p4d)
|
||||
static inline void native_set_pgd(pgd_t *pgdp, pgd_t pgd)
|
||||
{
|
||||
#ifdef CONFIG_PAGE_TABLE_ISOLATION
|
||||
- *pgdp = pti_set_user_pgd(pgdp, pgd);
|
||||
+ *pgdp = pti_set_user_pgtbl(pgdp, pgd);
|
||||
#else
|
||||
*pgdp = pgd;
|
||||
#endif
|
||||
diff --git a/arch/x86/mm/pti.c b/arch/x86/mm/pti.c
|
||||
index ce38f165489b..8f53d2101f64 100644
|
||||
--- a/arch/x86/mm/pti.c
|
||||
+++ b/arch/x86/mm/pti.c
|
||||
@@ -102,7 +102,7 @@ void __init pti_check_boottime_disable(void)
|
||||
setup_force_cpu_cap(X86_FEATURE_PTI);
|
||||
}
|
||||
|
||||
-pgd_t __pti_set_user_pgd(pgd_t *pgdp, pgd_t pgd)
|
||||
+pgd_t __pti_set_user_pgtbl(pgd_t *pgdp, pgd_t pgd)
|
||||
{
|
||||
/*
|
||||
* Changes to the high (kernel) portion of the kernelmode page
|
||||
--
|
||||
2.16.2
|
||||
|
||||
+3
-3
@@ -1,7 +1,7 @@
|
||||
From cc4fcd3fae72f6a72d9f275366b7165fa4ac3f71 Mon Sep 17 00:00:00 2001
|
||||
From 5439accd9f31dacdfbf67a18440d5805e8a0bfad Mon Sep 17 00:00:00 2001
|
||||
From: Joerg Roedel <jroedel@suse.de>
|
||||
Date: Fri, 2 Feb 2018 10:41:36 +0100
|
||||
Subject: [PATCH 14/31] x86/pgtable/pae: Unshare kernel PMDs when PTI is
|
||||
Subject: [PATCH 16/34] x86/pgtable/pae: Unshare kernel PMDs when PTI is
|
||||
enabled
|
||||
|
||||
With PTI we need to map the per-process LDT into the kernel
|
||||
@@ -31,5 +31,5 @@ index 876b4c77d983..ed8a200ecdaf 100644
|
||||
|
||||
/*
|
||||
--
|
||||
2.13.6
|
||||
2.16.2
|
||||
|
||||
+3
-3
@@ -1,7 +1,7 @@
|
||||
From 5ea0338f46add135a70678a6eba2e402310e7b26 Mon Sep 17 00:00:00 2001
|
||||
From 35cdf0541e9d5c7a47b59530fc8a42ac9ab767f8 Mon Sep 17 00:00:00 2001
|
||||
From: Joerg Roedel <jroedel@suse.de>
|
||||
Date: Tue, 16 Jan 2018 13:10:57 +0100
|
||||
Subject: [PATCH 15/31] x86/pgtable/32: Allocate 8k page-tables when PTI is
|
||||
Subject: [PATCH 17/34] x86/pgtable/32: Allocate 8k page-tables when PTI is
|
||||
enabled
|
||||
|
||||
Allocate a kernel and a user page-table root when PTI is
|
||||
@@ -94,5 +94,5 @@ index 004abf9ebf12..a81d42e48922 100644
|
||||
kmem_cache_free(pgd_cache, pgd);
|
||||
}
|
||||
--
|
||||
2.13.6
|
||||
2.16.2
|
||||
|
||||
+4
-4
@@ -1,7 +1,7 @@
|
||||
From eaacd465ad0f08807b151d2d27b0cad27b9de076 Mon Sep 17 00:00:00 2001
|
||||
From 69dfcb6ee23f6841982e059f58cc9be921b669dc Mon Sep 17 00:00:00 2001
|
||||
From: Joerg Roedel <jroedel@suse.de>
|
||||
Date: Tue, 16 Jan 2018 11:53:38 +0100
|
||||
Subject: [PATCH 16/31] x86/pgtable: Move pgdp kernel/user conversion functions
|
||||
Subject: [PATCH 18/34] x86/pgtable: Move pgdp kernel/user conversion functions
|
||||
to pgtable.h
|
||||
|
||||
Make them available on 32 bit and clone_pgd_range() happy.
|
||||
@@ -73,7 +73,7 @@ index e42b8943cb1a..0a9f746cbdc1 100644
|
||||
* clone_pgd_range(pgd_t *dst, pgd_t *src, int count);
|
||||
*
|
||||
diff --git a/arch/x86/include/asm/pgtable_64.h b/arch/x86/include/asm/pgtable_64.h
|
||||
index 81462e9a34f6..58d7f10e937d 100644
|
||||
index b68bda56db67..5e680838761d 100644
|
||||
--- a/arch/x86/include/asm/pgtable_64.h
|
||||
+++ b/arch/x86/include/asm/pgtable_64.h
|
||||
@@ -131,55 +131,6 @@ static inline pud_t native_pudp_get_and_clear(pud_t *xp)
|
||||
@@ -133,5 +133,5 @@ index 81462e9a34f6..58d7f10e937d 100644
|
||||
* Page table pages are page-aligned. The lower half of the top
|
||||
* level is used for userspace and the top half for the kernel.
|
||||
--
|
||||
2.13.6
|
||||
2.16.2
|
||||
|
||||
+13
-13
@@ -1,7 +1,7 @@
|
||||
From 82dd2440260533d518a810905c5492ba4f422a6f Mon Sep 17 00:00:00 2001
|
||||
From 88eb961770b7b265bf4725f0d687af8c9cf33467 Mon Sep 17 00:00:00 2001
|
||||
From: Joerg Roedel <jroedel@suse.de>
|
||||
Date: Tue, 16 Jan 2018 15:50:39 +0100
|
||||
Subject: [PATCH 17/31] x86/pgtable: Move pti_set_user_pgd() to pgtable.h
|
||||
Subject: [PATCH 19/34] x86/pgtable: Move pti_set_user_pgtbl() to pgtable.h
|
||||
|
||||
There it is also usable from 32 bit code.
|
||||
|
||||
@@ -12,7 +12,7 @@ Signed-off-by: Joerg Roedel <jroedel@suse.de>
|
||||
2 files changed, 23 insertions(+), 21 deletions(-)
|
||||
|
||||
diff --git a/arch/x86/include/asm/pgtable.h b/arch/x86/include/asm/pgtable.h
|
||||
index 0a9f746cbdc1..c9d3cf9ce831 100644
|
||||
index 0a9f746cbdc1..1e900c1f8ab1 100644
|
||||
--- a/arch/x86/include/asm/pgtable.h
|
||||
+++ b/arch/x86/include/asm/pgtable.h
|
||||
@@ -618,8 +618,31 @@ static inline int is_new_memtype_allowed(u64 paddr, unsigned long size,
|
||||
@@ -21,21 +21,21 @@ index 0a9f746cbdc1..c9d3cf9ce831 100644
|
||||
pte_t *populate_extra_pte(unsigned long vaddr);
|
||||
+
|
||||
+#ifdef CONFIG_PAGE_TABLE_ISOLATION
|
||||
+pgd_t __pti_set_user_pgd(pgd_t *pgdp, pgd_t pgd);
|
||||
+pgd_t __pti_set_user_pgtbl(pgd_t *pgdp, pgd_t pgd);
|
||||
+
|
||||
+/*
|
||||
+ * Take a PGD location (pgdp) and a pgd value that needs to be set there.
|
||||
+ * Populates the user and returns the resulting PGD that must be set in
|
||||
+ * the kernel copy of the page tables.
|
||||
+ */
|
||||
+static inline pgd_t pti_set_user_pgd(pgd_t *pgdp, pgd_t pgd)
|
||||
+static inline pgd_t pti_set_user_pgtbl(pgd_t *pgdp, pgd_t pgd)
|
||||
+{
|
||||
+ if (!static_cpu_has(X86_FEATURE_PTI))
|
||||
+ return pgd;
|
||||
+ return __pti_set_user_pgd(pgdp, pgd);
|
||||
+ return __pti_set_user_pgtbl(pgdp, pgd);
|
||||
+}
|
||||
+#else /* CONFIG_PAGE_TABLE_ISOLATION */
|
||||
+static inline pgd_t pti_set_user_pgd(pgd_t *pgdp, pgd_t pgd)
|
||||
+static inline pgd_t pti_set_user_pgtbl(pgd_t *pgdp, pgd_t pgd)
|
||||
+{
|
||||
+ return pgd;
|
||||
+}
|
||||
@@ -48,7 +48,7 @@ index 0a9f746cbdc1..c9d3cf9ce831 100644
|
||||
# include <asm/pgtable_32.h>
|
||||
#else
|
||||
diff --git a/arch/x86/include/asm/pgtable_64.h b/arch/x86/include/asm/pgtable_64.h
|
||||
index 58d7f10e937d..396664d95ac9 100644
|
||||
index 5e680838761d..4cbf5173dd76 100644
|
||||
--- a/arch/x86/include/asm/pgtable_64.h
|
||||
+++ b/arch/x86/include/asm/pgtable_64.h
|
||||
@@ -145,27 +145,6 @@ static inline bool pgdp_maps_userspace(void *__ptr)
|
||||
@@ -56,21 +56,21 @@ index 58d7f10e937d..396664d95ac9 100644
|
||||
}
|
||||
|
||||
-#ifdef CONFIG_PAGE_TABLE_ISOLATION
|
||||
-pgd_t __pti_set_user_pgd(pgd_t *pgdp, pgd_t pgd);
|
||||
-pgd_t __pti_set_user_pgtbl(pgd_t *pgdp, pgd_t pgd);
|
||||
-
|
||||
-/*
|
||||
- * Take a PGD location (pgdp) and a pgd value that needs to be set there.
|
||||
- * Populates the user and returns the resulting PGD that must be set in
|
||||
- * the kernel copy of the page tables.
|
||||
- */
|
||||
-static inline pgd_t pti_set_user_pgd(pgd_t *pgdp, pgd_t pgd)
|
||||
-static inline pgd_t pti_set_user_pgtbl(pgd_t *pgdp, pgd_t pgd)
|
||||
-{
|
||||
- if (!static_cpu_has(X86_FEATURE_PTI))
|
||||
- return pgd;
|
||||
- return __pti_set_user_pgd(pgdp, pgd);
|
||||
- return __pti_set_user_pgtbl(pgdp, pgd);
|
||||
-}
|
||||
-#else
|
||||
-static inline pgd_t pti_set_user_pgd(pgd_t *pgdp, pgd_t pgd)
|
||||
-static inline pgd_t pti_set_user_pgtbl(pgd_t *pgdp, pgd_t pgd)
|
||||
-{
|
||||
- return pgd;
|
||||
-}
|
||||
@@ -80,5 +80,5 @@ index 58d7f10e937d..396664d95ac9 100644
|
||||
{
|
||||
#if defined(CONFIG_PAGE_TABLE_ISOLATION) && !defined(CONFIG_X86_5LEVEL)
|
||||
--
|
||||
2.13.6
|
||||
2.16.2
|
||||
|
||||
+5
-5
@@ -1,7 +1,7 @@
|
||||
From 29023f0a7d98a96f2928c80ace36beffe5d28d41 Mon Sep 17 00:00:00 2001
|
||||
From 2bcb4034a5d3e49213d4b7e72187b106a50d53f3 Mon Sep 17 00:00:00 2001
|
||||
From: Joerg Roedel <jroedel@suse.de>
|
||||
Date: Tue, 16 Jan 2018 12:48:14 +0100
|
||||
Subject: [PATCH 18/31] x86/pgtable: Move two more functions from pgtable_64.h
|
||||
Subject: [PATCH 20/34] x86/pgtable: Move two more functions from pgtable_64.h
|
||||
to pgtable.h
|
||||
|
||||
These two functions are required for PTI on 32 bit:
|
||||
@@ -45,7 +45,7 @@ index ed8a200ecdaf..925ac1bc45cb 100644
|
||||
|
||||
#endif /* _ASM_X86_PGTABLE_3LEVEL_DEFS_H */
|
||||
diff --git a/arch/x86/include/asm/pgtable.h b/arch/x86/include/asm/pgtable.h
|
||||
index c9d3cf9ce831..82151f602174 100644
|
||||
index 1e900c1f8ab1..981e49a8cdb2 100644
|
||||
--- a/arch/x86/include/asm/pgtable.h
|
||||
+++ b/arch/x86/include/asm/pgtable.h
|
||||
@@ -1132,6 +1132,22 @@ static inline int pud_write(pud_t pud)
|
||||
@@ -72,7 +72,7 @@ index c9d3cf9ce831..82151f602174 100644
|
||||
/*
|
||||
* All top-level PAGE_TABLE_ISOLATION page tables are order-1 pages
|
||||
diff --git a/arch/x86/include/asm/pgtable_64.h b/arch/x86/include/asm/pgtable_64.h
|
||||
index 396664d95ac9..50a02a32a0b3 100644
|
||||
index 4cbf5173dd76..e11b92585de4 100644
|
||||
--- a/arch/x86/include/asm/pgtable_64.h
|
||||
+++ b/arch/x86/include/asm/pgtable_64.h
|
||||
@@ -131,20 +131,6 @@ static inline pud_t native_pudp_get_and_clear(pud_t *xp)
|
||||
@@ -116,5 +116,5 @@ index 6b8f73dcbc2c..e57003a3f58a 100644
|
||||
+
|
||||
#endif /* _ASM_X86_PGTABLE_64_DEFS_H */
|
||||
--
|
||||
2.13.6
|
||||
2.16.2
|
||||
|
||||
+10
-8
@@ -1,7 +1,7 @@
|
||||
From fbd7d587621cdf5c45fc32ae35e8cbec26387ed6 Mon Sep 17 00:00:00 2001
|
||||
From 85228cdba0d4634d6a1a162be0d755bd8ed3bdfa Mon Sep 17 00:00:00 2001
|
||||
From: Joerg Roedel <jroedel@suse.de>
|
||||
Date: Tue, 16 Jan 2018 15:28:57 +0100
|
||||
Subject: [PATCH 19/31] x86/mm/pae: Populate valid user PGD entries
|
||||
Subject: [PATCH 21/34] x86/mm/pae: Populate valid user PGD entries
|
||||
|
||||
Generic page-table code populates all non-leaf entries with
|
||||
_KERNPG_TABLE bits set. This is fine for all paging modes
|
||||
@@ -13,11 +13,11 @@ reserved bits.
|
||||
|
||||
Signed-off-by: Joerg Roedel <jroedel@suse.de>
|
||||
---
|
||||
arch/x86/include/asm/pgtable_types.h | 26 ++++++++++++++++++++++++--
|
||||
1 file changed, 24 insertions(+), 2 deletions(-)
|
||||
arch/x86/include/asm/pgtable_types.h | 28 ++++++++++++++++++++++++++--
|
||||
1 file changed, 26 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/arch/x86/include/asm/pgtable_types.h b/arch/x86/include/asm/pgtable_types.h
|
||||
index 3696398a9475..5027470f4f1c 100644
|
||||
index 3696398a9475..48fc70b2d044 100644
|
||||
--- a/arch/x86/include/asm/pgtable_types.h
|
||||
+++ b/arch/x86/include/asm/pgtable_types.h
|
||||
@@ -50,6 +50,7 @@
|
||||
@@ -28,7 +28,7 @@ index 3696398a9475..5027470f4f1c 100644
|
||||
#define _PAGE_PAT (_AT(pteval_t, 1) << _PAGE_BIT_PAT)
|
||||
#define _PAGE_PAT_LARGE (_AT(pteval_t, 1) << _PAGE_BIT_PAT_LARGE)
|
||||
#define _PAGE_SPECIAL (_AT(pteval_t, 1) << _PAGE_BIT_SPECIAL)
|
||||
@@ -267,14 +268,35 @@ typedef struct pgprot { pgprotval_t pgprot; } pgprot_t;
|
||||
@@ -267,14 +268,37 @@ typedef struct pgprot { pgprotval_t pgprot; } pgprot_t;
|
||||
|
||||
typedef struct { pgdval_t pgd; } pgd_t;
|
||||
|
||||
@@ -38,7 +38,9 @@ index 3696398a9475..5027470f4f1c 100644
|
||||
+ * PHYSICAL_PAGE_MASK might be non-constant when SME is compiled in, so we can't
|
||||
+ * use it here.
|
||||
+ */
|
||||
+#define PGD_PAE_PHYS_MASK (((1ULL << __PHYSICAL_MASK_SHIFT)-1) & PAGE_MASK)
|
||||
+
|
||||
+#define PGD_PAE_PAGE_MASK ((signed long)PAGE_MASK)
|
||||
+#define PGD_PAE_PHYS_MASK (((1ULL << __PHYSICAL_MASK_SHIFT)-1) & PGD_PAE_PAGE_MASK)
|
||||
+
|
||||
+/*
|
||||
+ * PAE allows Base Address, P, PWT, PCD and AVL bits to be set in PGD entries.
|
||||
@@ -67,5 +69,5 @@ index 3696398a9475..5027470f4f1c 100644
|
||||
|
||||
static inline pgdval_t pgd_flags(pgd_t pgd)
|
||||
--
|
||||
2.13.6
|
||||
2.16.2
|
||||
|
||||
+6
-6
@@ -1,7 +1,7 @@
|
||||
From d20f4e476110d1af543b471f317dfc97bec54d7c Mon Sep 17 00:00:00 2001
|
||||
From f05eb123abd9d8696ef340e62a37348381ff95fa Mon Sep 17 00:00:00 2001
|
||||
From: Joerg Roedel <jroedel@suse.de>
|
||||
Date: Tue, 16 Jan 2018 15:55:17 +0100
|
||||
Subject: [PATCH 20/31] x86/mm/pae: Populate the user page-table with user
|
||||
Subject: [PATCH 22/34] x86/mm/pae: Populate the user page-table with user
|
||||
pgd's
|
||||
|
||||
When we populate a PGD entry, make sure we populate it in
|
||||
@@ -13,7 +13,7 @@ Signed-off-by: Joerg Roedel <jroedel@suse.de>
|
||||
1 file changed, 7 insertions(+)
|
||||
|
||||
diff --git a/arch/x86/include/asm/pgtable-3level.h b/arch/x86/include/asm/pgtable-3level.h
|
||||
index bc4af5453802..1a0661be1861 100644
|
||||
index bc4af5453802..ab2aa4468293 100644
|
||||
--- a/arch/x86/include/asm/pgtable-3level.h
|
||||
+++ b/arch/x86/include/asm/pgtable-3level.h
|
||||
@@ -98,6 +98,9 @@ static inline void native_set_pmd(pmd_t *pmdp, pmd_t pmd)
|
||||
@@ -21,7 +21,7 @@ index bc4af5453802..1a0661be1861 100644
|
||||
static inline void native_set_pud(pud_t *pudp, pud_t pud)
|
||||
{
|
||||
+#ifdef CONFIG_PAGE_TABLE_ISOLATION
|
||||
+ pud.p4d.pgd = pti_set_user_pgd(&pudp->p4d.pgd, pud.p4d.pgd);
|
||||
+ pud.p4d.pgd = pti_set_user_pgtbl(&pudp->p4d.pgd, pud.p4d.pgd);
|
||||
+#endif
|
||||
set_64bit((unsigned long long *)(pudp), native_pud_val(pud));
|
||||
}
|
||||
@@ -31,12 +31,12 @@ index bc4af5453802..1a0661be1861 100644
|
||||
union split_pud res, *orig = (union split_pud *)pudp;
|
||||
|
||||
+#ifdef CONFIG_PAGE_TABLE_ISOLATION
|
||||
+ pti_set_user_pgd(&pudp->p4d.pgd, __pgd(0));
|
||||
+ pti_set_user_pgtbl(&pudp->p4d.pgd, __pgd(0));
|
||||
+#endif
|
||||
+
|
||||
/* xchg acts as a barrier before setting of the high bits */
|
||||
res.pud_low = xchg(&orig->pud_low, 0);
|
||||
res.pud_high = orig->pud_high;
|
||||
--
|
||||
2.13.6
|
||||
2.16.2
|
||||
|
||||
+7
-7
@@ -1,7 +1,7 @@
|
||||
From c7eb77959596dc4e78ef164f572520767df21fa3 Mon Sep 17 00:00:00 2001
|
||||
From 08a22d9c7b62e9c9e08eaf9508f3ef881768a636 Mon Sep 17 00:00:00 2001
|
||||
From: Joerg Roedel <jroedel@suse.de>
|
||||
Date: Tue, 16 Jan 2018 16:29:13 +0100
|
||||
Subject: [PATCH 21/31] x86/mm/legacy: Populate the user page-table with user
|
||||
Subject: [PATCH 23/34] x86/mm/legacy: Populate the user page-table with user
|
||||
pgd's
|
||||
|
||||
Also populate the user-spage pgd's in the user page-table.
|
||||
@@ -12,7 +12,7 @@ Signed-off-by: Joerg Roedel <jroedel@suse.de>
|
||||
1 file changed, 9 insertions(+)
|
||||
|
||||
diff --git a/arch/x86/include/asm/pgtable-2level.h b/arch/x86/include/asm/pgtable-2level.h
|
||||
index 685ffe8a0eaf..d77255451d7a 100644
|
||||
index 685ffe8a0eaf..c399ea5eea41 100644
|
||||
--- a/arch/x86/include/asm/pgtable-2level.h
|
||||
+++ b/arch/x86/include/asm/pgtable-2level.h
|
||||
@@ -19,6 +19,9 @@ static inline void native_set_pte(pte_t *ptep , pte_t pte)
|
||||
@@ -20,7 +20,7 @@ index 685ffe8a0eaf..d77255451d7a 100644
|
||||
static inline void native_set_pmd(pmd_t *pmdp, pmd_t pmd)
|
||||
{
|
||||
+#ifdef CONFIG_PAGE_TABLE_ISOLATION
|
||||
+ pmd.pud.p4d.pgd = pti_set_user_pgd(&pmdp->pud.p4d.pgd, pmd.pud.p4d.pgd);
|
||||
+ pmd.pud.p4d.pgd = pti_set_user_pgtbl(&pmdp->pud.p4d.pgd, pmd.pud.p4d.pgd);
|
||||
+#endif
|
||||
*pmdp = pmd;
|
||||
}
|
||||
@@ -30,7 +30,7 @@ index 685ffe8a0eaf..d77255451d7a 100644
|
||||
static inline pmd_t native_pmdp_get_and_clear(pmd_t *xp)
|
||||
{
|
||||
+#ifdef CONFIG_PAGE_TABLE_ISOLATION
|
||||
+ pti_set_user_pgd(&xp->pud.p4d.pgd, __pgd(0));
|
||||
+ pti_set_user_pgtbl(&xp->pud.p4d.pgd, __pgd(0));
|
||||
+#endif
|
||||
return __pmd(xchg((pmdval_t *)xp, 0));
|
||||
}
|
||||
@@ -40,11 +40,11 @@ index 685ffe8a0eaf..d77255451d7a 100644
|
||||
static inline pud_t native_pudp_get_and_clear(pud_t *xp)
|
||||
{
|
||||
+#ifdef CONFIG_PAGE_TABLE_ISOLATION
|
||||
+ pti_set_user_pgd(&xp->p4d.pgd, __pgd(0));
|
||||
+ pti_set_user_pgtbl(&xp->p4d.pgd, __pgd(0));
|
||||
+#endif
|
||||
return __pud(xchg((pudval_t *)xp, 0));
|
||||
}
|
||||
#else
|
||||
--
|
||||
2.13.6
|
||||
2.16.2
|
||||
|
||||
+4
-4
@@ -1,7 +1,7 @@
|
||||
From 9c0f3c2b70d61e768172c322343b8d049224f8bc Mon Sep 17 00:00:00 2001
|
||||
From 9fb9b9305a94eb64cd9bfc007d0457aa16a3429c Mon Sep 17 00:00:00 2001
|
||||
From: Joerg Roedel <jroedel@suse.de>
|
||||
Date: Tue, 16 Jan 2018 16:23:52 +0100
|
||||
Subject: [PATCH 22/31] x86/mm/pti: Add an overflow check to pti_clone_pmds()
|
||||
Subject: [PATCH 24/34] x86/mm/pti: Add an overflow check to pti_clone_pmds()
|
||||
|
||||
The addr counter will overflow if we clone the last PMD of
|
||||
the address space, resulting in an endless loop.
|
||||
@@ -14,7 +14,7 @@ Signed-off-by: Joerg Roedel <jroedel@suse.de>
|
||||
1 file changed, 4 insertions(+)
|
||||
|
||||
diff --git a/arch/x86/mm/pti.c b/arch/x86/mm/pti.c
|
||||
index ce38f165489b..7f5e698d127c 100644
|
||||
index 8f53d2101f64..96a690e6c9b1 100644
|
||||
--- a/arch/x86/mm/pti.c
|
||||
+++ b/arch/x86/mm/pti.c
|
||||
@@ -282,6 +282,10 @@ pti_clone_pmds(unsigned long start, unsigned long end, pmdval_t clear)
|
||||
@@ -29,5 +29,5 @@ index ce38f165489b..7f5e698d127c 100644
|
||||
if (WARN_ON(pgd_none(*pgd)))
|
||||
return;
|
||||
--
|
||||
2.13.6
|
||||
2.16.2
|
||||
|
||||
+4
-3
@@ -1,11 +1,12 @@
|
||||
From a53c9f48916802bf66a66055537376dbe31716d1 Mon Sep 17 00:00:00 2001
|
||||
From b4c87612168011f7e95681027bf1de290da8d668 Mon Sep 17 00:00:00 2001
|
||||
From: Joerg Roedel <jroedel@suse.de>
|
||||
Date: Tue, 16 Jan 2018 11:35:19 +0100
|
||||
Subject: [PATCH 23/31] x86/mm/pti: Define X86_CR3_PTI_PCID_USER_BIT on x86_32
|
||||
Subject: [PATCH 25/34] x86/mm/pti: Define X86_CR3_PTI_PCID_USER_BIT on x86_32
|
||||
|
||||
Move it out of the X86_64 specific processor defines so
|
||||
that its visible for 32bit too.
|
||||
|
||||
Reviewed-by: Andy Lutomirski <luto@kernel.org>
|
||||
Signed-off-by: Joerg Roedel <jroedel@suse.de>
|
||||
---
|
||||
arch/x86/include/asm/processor-flags.h | 8 ++++----
|
||||
@@ -36,5 +37,5 @@ index 625a52a5594f..02c2cbda4a74 100644
|
||||
+
|
||||
#endif /* _ASM_X86_PROCESSOR_FLAGS_H */
|
||||
--
|
||||
2.13.6
|
||||
2.16.2
|
||||
|
||||
+4
-4
@@ -1,7 +1,7 @@
|
||||
From 56d5b738711fe0179293e1364d78763edfad55f3 Mon Sep 17 00:00:00 2001
|
||||
From c3b8f5b6bbb097409895ea8e00042034408cac54 Mon Sep 17 00:00:00 2001
|
||||
From: Joerg Roedel <jroedel@suse.de>
|
||||
Date: Tue, 16 Jan 2018 14:13:04 +0100
|
||||
Subject: [PATCH 24/31] x86/mm/pti: Clone CPU_ENTRY_AREA on PMD level on x86_32
|
||||
Subject: [PATCH 26/34] x86/mm/pti: Clone CPU_ENTRY_AREA on PMD level on x86_32
|
||||
|
||||
Cloning on the P4D level would clone the complete kernel
|
||||
address space into the user-space page-tables for PAE
|
||||
@@ -14,7 +14,7 @@ Signed-off-by: Joerg Roedel <jroedel@suse.de>
|
||||
1 file changed, 20 insertions(+)
|
||||
|
||||
diff --git a/arch/x86/mm/pti.c b/arch/x86/mm/pti.c
|
||||
index 7f5e698d127c..ec9852abc357 100644
|
||||
index 96a690e6c9b1..3ffd92309aca 100644
|
||||
--- a/arch/x86/mm/pti.c
|
||||
+++ b/arch/x86/mm/pti.c
|
||||
@@ -312,6 +312,7 @@ pti_clone_pmds(unsigned long start, unsigned long end, pmdval_t clear)
|
||||
@@ -52,5 +52,5 @@ index 7f5e698d127c..ec9852abc357 100644
|
||||
* Clone the ESPFIX P4D into the user space visinble page table
|
||||
*/
|
||||
--
|
||||
2.13.6
|
||||
2.16.2
|
||||
|
||||
+3
-3
@@ -1,7 +1,7 @@
|
||||
From 2d0143773e3f3e021b75fcdb886efd7cf2a4e8ce Mon Sep 17 00:00:00 2001
|
||||
From 35f7b44b3ce2d5b4c4fe2fabb8905bfff44559d4 Mon Sep 17 00:00:00 2001
|
||||
From: Joerg Roedel <jroedel@suse.de>
|
||||
Date: Thu, 8 Feb 2018 09:11:57 +0100
|
||||
Subject: [PATCH 25/31] x86/mm/dump_pagetables: Define INIT_PGD
|
||||
Subject: [PATCH 27/34] x86/mm/dump_pagetables: Define INIT_PGD
|
||||
|
||||
Define INIT_PGD to point to the correct initial page-table
|
||||
for 32 and 64 bit and use it where needed. This fixes the
|
||||
@@ -57,5 +57,5 @@ index 2a4849e92831..2151ebb6a282 100644
|
||||
if (!static_cpu_has(X86_FEATURE_PTI))
|
||||
return;
|
||||
--
|
||||
2.13.6
|
||||
2.16.2
|
||||
|
||||
+3
-3
@@ -1,7 +1,7 @@
|
||||
From eccc6c5333bb7f33f88e7ec9a87f561bc5d63ccd Mon Sep 17 00:00:00 2001
|
||||
From c15cbcd9bc3d2e8aaecffc5053dbcf382fe6e56d Mon Sep 17 00:00:00 2001
|
||||
From: Joerg Roedel <jroedel@suse.de>
|
||||
Date: Wed, 7 Feb 2018 15:37:52 +0100
|
||||
Subject: [PATCH 26/31] x86/pgtable/pae: Use separate kernel PMDs for user
|
||||
Subject: [PATCH 28/34] x86/pgtable/pae: Use separate kernel PMDs for user
|
||||
page-table
|
||||
|
||||
We need separate kernel PMDs in the user page-table when PTI
|
||||
@@ -209,5 +209,5 @@ index a81d42e48922..d95bc7b1ffb4 100644
|
||||
_pgd_free(pgd);
|
||||
out:
|
||||
--
|
||||
2.13.6
|
||||
2.16.2
|
||||
|
||||
+11
-11
@@ -1,7 +1,7 @@
|
||||
From c07a31bb57363adb6f9d0def1d6b7a16b4a5c72c Mon Sep 17 00:00:00 2001
|
||||
From dd247e8ec4d2eeefdcb6ad173f1eef8007f54101 Mon Sep 17 00:00:00 2001
|
||||
From: Joerg Roedel <jroedel@suse.de>
|
||||
Date: Tue, 16 Jan 2018 12:40:07 +0100
|
||||
Subject: [PATCH 27/31] x86/ldt: Reserve address-space range on 32 bit for the
|
||||
Subject: [PATCH 29/34] x86/ldt: Reserve address-space range on 32 bit for the
|
||||
LDT
|
||||
|
||||
Reserve 2MB/4MB of address-space for mapping the LDT to
|
||||
@@ -40,26 +40,26 @@ diff --git a/arch/x86/mm/dump_pagetables.c b/arch/x86/mm/dump_pagetables.c
|
||||
index 2151ebb6a282..fdefdf05739c 100644
|
||||
--- a/arch/x86/mm/dump_pagetables.c
|
||||
+++ b/arch/x86/mm/dump_pagetables.c
|
||||
@@ -117,6 +117,9 @@ enum address_markers_idx {
|
||||
@@ -116,6 +116,9 @@ enum address_markers_idx {
|
||||
VMALLOC_END_NR,
|
||||
#ifdef CONFIG_HIGHMEM
|
||||
PKMAP_BASE_NR,
|
||||
#endif
|
||||
+#endif
|
||||
+#ifdef CONFIG_MODIFY_LDT_SYSCALL
|
||||
+ LDT_NR,
|
||||
+#endif
|
||||
#endif
|
||||
CPU_ENTRY_AREA_NR,
|
||||
FIXADDR_START_NR,
|
||||
END_OF_SPACE_NR,
|
||||
@@ -130,6 +133,9 @@ static struct addr_marker address_markers[] = {
|
||||
@@ -129,6 +132,9 @@ static struct addr_marker address_markers[] = {
|
||||
[VMALLOC_END_NR] = { 0UL, "vmalloc() End" },
|
||||
#ifdef CONFIG_HIGHMEM
|
||||
[PKMAP_BASE_NR] = { 0UL, "Persistent kmap() Area" },
|
||||
#endif
|
||||
+#endif
|
||||
+#ifdef CONFIG_MODIFY_LDT_SYSCALL
|
||||
+ [LDT_NR] = { 0UL, "LDT remap" },
|
||||
+#endif
|
||||
#endif
|
||||
[CPU_ENTRY_AREA_NR] = { 0UL, "CPU entry area" },
|
||||
[FIXADDR_START_NR] = { 0UL, "Fixmap area" },
|
||||
[END_OF_SPACE_NR] = { -1, NULL }
|
||||
@@ -579,6 +585,9 @@ static int __init pt_dump_init(void)
|
||||
# endif
|
||||
address_markers[FIXADDR_START_NR].start_address = FIXADDR_START;
|
||||
@@ -71,5 +71,5 @@ index 2151ebb6a282..fdefdf05739c 100644
|
||||
return 0;
|
||||
}
|
||||
--
|
||||
2.13.6
|
||||
2.16.2
|
||||
|
||||
+3
-3
@@ -1,7 +1,7 @@
|
||||
From 2b4c93fdb404c6155b1f7098895b93cde7b79550 Mon Sep 17 00:00:00 2001
|
||||
From e00857066a9f75a64a00528d451be9899ec7328f Mon Sep 17 00:00:00 2001
|
||||
From: Joerg Roedel <jroedel@suse.de>
|
||||
Date: Wed, 7 Feb 2018 17:44:44 +0100
|
||||
Subject: [PATCH 28/31] x86/ldt: Define LDT_END_ADDR
|
||||
Subject: [PATCH 30/34] x86/ldt: Define LDT_END_ADDR
|
||||
|
||||
It marks the end of the address-space range reserved for the
|
||||
LDT. The LDT-code will use it when unmapping the LDT for
|
||||
@@ -60,5 +60,5 @@ index 26d713ecad34..f3c2fbf3c458 100644
|
||||
if (!static_cpu_has(X86_FEATURE_PTI))
|
||||
return;
|
||||
--
|
||||
2.13.6
|
||||
2.16.2
|
||||
|
||||
+3
-3
@@ -1,7 +1,7 @@
|
||||
From 9a4c777654ebe02d30461d2a8a05de6fe4b987f0 Mon Sep 17 00:00:00 2001
|
||||
From 126ef631acff4fe06d76992f40e04237d7d57344 Mon Sep 17 00:00:00 2001
|
||||
From: Joerg Roedel <jroedel@suse.de>
|
||||
Date: Wed, 7 Feb 2018 18:02:18 +0100
|
||||
Subject: [PATCH 29/31] x86/ldt: Split out sanity check in map_ldt_struct()
|
||||
Subject: [PATCH 31/34] x86/ldt: Split out sanity check in map_ldt_struct()
|
||||
|
||||
This splits out the mapping sanity check and the actual
|
||||
mapping of the LDT to user-space from the map_ldt_struct()
|
||||
@@ -142,5 +142,5 @@ index f3c2fbf3c458..8ab7df99c868 100644
|
||||
{
|
||||
#ifdef CONFIG_PAGE_TABLE_ISOLATION
|
||||
--
|
||||
2.13.6
|
||||
2.16.2
|
||||
|
||||
+3
-3
@@ -1,7 +1,7 @@
|
||||
From 94b5cc7e833ec2b9427fa42f8de203f2f4c98bc5 Mon Sep 17 00:00:00 2001
|
||||
From 1d4ac3c5063abdada00ad78e0ccf74c7de4b365d Mon Sep 17 00:00:00 2001
|
||||
From: Joerg Roedel <jroedel@suse.de>
|
||||
Date: Wed, 7 Feb 2018 18:11:54 +0100
|
||||
Subject: [PATCH 30/31] x86/ldt: Enable LDT user-mapping for PAE
|
||||
Subject: [PATCH 32/34] x86/ldt: Enable LDT user-mapping for PAE
|
||||
|
||||
This adds the needed special case for PAE to get the LDT
|
||||
mapped into the user page-table when PTI is enabled. The big
|
||||
@@ -103,5 +103,5 @@ index 8ab7df99c868..778745199d96 100644
|
||||
* If PTI is enabled, this maps the LDT into the kernelmode and
|
||||
* usermode tables for the given mm.
|
||||
--
|
||||
2.13.6
|
||||
2.16.2
|
||||
|
||||
+2
-2
@@ -1,7 +1,7 @@
|
||||
From dbb0074f778b396a11e0c897fef9d0c4583e7ccb Mon Sep 17 00:00:00 2001
|
||||
From c15b3c596de19962f32b8aecb5abe56a9455a342 Mon Sep 17 00:00:00 2001
|
||||
From: Joerg Roedel <jroedel@suse.de>
|
||||
Date: Tue, 16 Jan 2018 11:33:01 +0100
|
||||
Subject: [PATCH 31/31] x86/pti: Allow CONFIG_PAGE_TABLE_ISOLATION for x86_32
|
||||
Subject: [PATCH 33/34] x86/pti: Allow CONFIG_PAGE_TABLE_ISOLATION for x86_32
|
||||
|
||||
Allow PTI to be compiled on x86_32.
|
||||
|
||||
+45
@@ -0,0 +1,45 @@
|
||||
From e7591bc0c06694418c773c099f84b79003257069 Mon Sep 17 00:00:00 2001
|
||||
From: Joerg Roedel <jroedel@suse.de>
|
||||
Date: Mon, 12 Feb 2018 19:47:19 +0100
|
||||
Subject: [PATCH 34/34] x86/mm/pti: Add Warning when booting on a PCID capable
|
||||
CPU
|
||||
|
||||
Warn the user in case the performance can be significantly
|
||||
improved by switching to a 64-bit kernel.
|
||||
|
||||
Suggested-by: Andy Lutomirski <luto@kernel.org>
|
||||
Signed-off-by: Joerg Roedel <jroedel@suse.de>
|
||||
---
|
||||
arch/x86/mm/pti.c | 16 ++++++++++++++++
|
||||
1 file changed, 16 insertions(+)
|
||||
|
||||
diff --git a/arch/x86/mm/pti.c b/arch/x86/mm/pti.c
|
||||
index 3ffd92309aca..8f5aa0dda327 100644
|
||||
--- a/arch/x86/mm/pti.c
|
||||
+++ b/arch/x86/mm/pti.c
|
||||
@@ -385,6 +385,22 @@ void __init pti_init(void)
|
||||
|
||||
pr_info("enabled\n");
|
||||
|
||||
+#ifdef CONFIG_X86_32
|
||||
+ if (boot_cpu_has(X86_FEATURE_PCID)) {
|
||||
+ /* Use printk to work around pr_fmt() */
|
||||
+ printk(KERN_WARNING "\n");
|
||||
+ printk(KERN_WARNING "************************************************************\n");
|
||||
+ printk(KERN_WARNING "** WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! **\n");
|
||||
+ printk(KERN_WARNING "** **\n");
|
||||
+ printk(KERN_WARNING "** You are using 32-bit PTI on a 64-bit PCID-capable CPU. **\n");
|
||||
+ printk(KERN_WARNING "** Your performance will increase dramatically if you **\n");
|
||||
+ printk(KERN_WARNING "** switch to a 64-bit kernel! **\n");
|
||||
+ printk(KERN_WARNING "** **\n");
|
||||
+ printk(KERN_WARNING "** WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! **\n");
|
||||
+ printk(KERN_WARNING "************************************************************\n");
|
||||
+ }
|
||||
+#endif
|
||||
+
|
||||
pti_clone_user_shared();
|
||||
pti_clone_entry_text();
|
||||
pti_setup_espfix64();
|
||||
--
|
||||
2.16.2
|
||||
|
||||
+32
@@ -0,0 +1,32 @@
|
||||
|
||||
Dont scare people with something that should be an informal message.
|
||||
|
||||
Signed-off-by: Thomas Backlund <tmb@mageia.org>
|
||||
|
||||
--- linux/arch/x86/mm/pti.c.orig
|
||||
+++ linux/arch/x86/mm/pti.c
|
||||
@@ -388,16 +388,14 @@ void __init pti_init(void)
|
||||
#ifdef CONFIG_X86_32
|
||||
if (boot_cpu_has(X86_FEATURE_PCID)) {
|
||||
/* Use printk to work around pr_fmt() */
|
||||
- printk(KERN_WARNING "\n");
|
||||
- printk(KERN_WARNING "************************************************************\n");
|
||||
- printk(KERN_WARNING "** WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! **\n");
|
||||
- printk(KERN_WARNING "** **\n");
|
||||
- printk(KERN_WARNING "** You are using 32-bit PTI on a 64-bit PCID-capable CPU. **\n");
|
||||
- printk(KERN_WARNING "** Your performance will increase dramatically if you **\n");
|
||||
- printk(KERN_WARNING "** switch to a 64-bit kernel! **\n");
|
||||
- printk(KERN_WARNING "** **\n");
|
||||
- printk(KERN_WARNING "** WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! **\n");
|
||||
- printk(KERN_WARNING "************************************************************\n");
|
||||
+ printk(KERN_INFO "\n");
|
||||
+ printk(KERN_INFO "************************************************************\n");
|
||||
+ printk(KERN_INFO "** **\n");
|
||||
+ printk(KERN_INFO "** You are using 32-bit PTI on a 64-bit PCID-capable CPU. **\n");
|
||||
+ printk(KERN_INFO "** Your performance will increase dramatically if you **\n");
|
||||
+ printk(KERN_INFO "** switch to a 64-bit install. **\n");
|
||||
+ printk(KERN_INFO "** **\n");
|
||||
+ printk(KERN_INFO "************************************************************\n");
|
||||
}
|
||||
#endif
|
||||
|
||||
+126
@@ -0,0 +1,126 @@
|
||||
From 3be8828fc507cdafe7040a3dcf361a2bcd8e305b Mon Sep 17 00:00:00 2001
|
||||
From: Bart Van Assche <bart.vanassche@wdc.com>
|
||||
Date: Thu, 22 Feb 2018 11:30:20 -0800
|
||||
Subject: scsi: core: Avoid that ATA error handling can trigger a kernel hang
|
||||
or oops
|
||||
|
||||
Avoid that the recently introduced call_rcu() call in the SCSI core
|
||||
triggers a double call_rcu() call.
|
||||
|
||||
Reported-by: Natanael Copa <ncopa@alpinelinux.org>
|
||||
Reported-by: Damien Le Moal <damien.lemoal@wdc.com>
|
||||
References: https://bugzilla.kernel.org/show_bug.cgi?id=198861
|
||||
Fixes: 3bd6f43f5cb3 ("scsi: core: Ensure that the SCSI error handler gets woken up")
|
||||
Signed-off-by: Bart Van Assche <bart.vanassche@wdc.com>
|
||||
Reviewed-by: Damien Le Moal <damien.lemoal@wdc.com>
|
||||
Tested-by: Damien Le Moal <damien.lemoal@wdc.com>
|
||||
Cc: Natanael Copa <ncopa@alpinelinux.org>
|
||||
Cc: Damien Le Moal <damien.lemoal@wdc.com>
|
||||
Cc: Alexandre Oliva <oliva@gnu.org>
|
||||
Cc: Pavel Tikhomirov <ptikhomirov@virtuozzo.com>
|
||||
Cc: Hannes Reinecke <hare@suse.com>
|
||||
Cc: Johannes Thumshirn <jthumshirn@suse.de>
|
||||
Cc: <stable@vger.kernel.org>
|
||||
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
|
||||
---
|
||||
drivers/scsi/hosts.c | 3 ---
|
||||
drivers/scsi/scsi_error.c | 5 +++--
|
||||
drivers/scsi/scsi_lib.c | 2 ++
|
||||
include/scsi/scsi_cmnd.h | 3 +++
|
||||
include/scsi/scsi_host.h | 2 --
|
||||
5 files changed, 8 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/drivers/scsi/hosts.c b/drivers/scsi/hosts.c
|
||||
index 57bf43e..dd94649 100644
|
||||
--- a/drivers/scsi/hosts.c
|
||||
+++ b/drivers/scsi/hosts.c
|
||||
@@ -328,8 +328,6 @@ static void scsi_host_dev_release(struct device *dev)
|
||||
if (shost->work_q)
|
||||
destroy_workqueue(shost->work_q);
|
||||
|
||||
- destroy_rcu_head(&shost->rcu);
|
||||
-
|
||||
if (shost->shost_state == SHOST_CREATED) {
|
||||
/*
|
||||
* Free the shost_dev device name here if scsi_host_alloc()
|
||||
@@ -404,7 +402,6 @@ struct Scsi_Host *scsi_host_alloc(struct scsi_host_template *sht, int privsize)
|
||||
INIT_LIST_HEAD(&shost->starved_list);
|
||||
init_waitqueue_head(&shost->host_wait);
|
||||
mutex_init(&shost->scan_mutex);
|
||||
- init_rcu_head(&shost->rcu);
|
||||
|
||||
index = ida_simple_get(&host_index_ida, 0, 0, GFP_KERNEL);
|
||||
if (index < 0)
|
||||
diff --git a/drivers/scsi/scsi_error.c b/drivers/scsi/scsi_error.c
|
||||
index d042915..ca53a5f 100644
|
||||
--- a/drivers/scsi/scsi_error.c
|
||||
+++ b/drivers/scsi/scsi_error.c
|
||||
@@ -223,7 +223,8 @@ static void scsi_eh_reset(struct scsi_cmnd *scmd)
|
||||
|
||||
static void scsi_eh_inc_host_failed(struct rcu_head *head)
|
||||
{
|
||||
- struct Scsi_Host *shost = container_of(head, typeof(*shost), rcu);
|
||||
+ struct scsi_cmnd *scmd = container_of(head, typeof(*scmd), rcu);
|
||||
+ struct Scsi_Host *shost = scmd->device->host;
|
||||
unsigned long flags;
|
||||
|
||||
spin_lock_irqsave(shost->host_lock, flags);
|
||||
@@ -259,7 +260,7 @@ void scsi_eh_scmd_add(struct scsi_cmnd *scmd)
|
||||
* Ensure that all tasks observe the host state change before the
|
||||
* host_failed change.
|
||||
*/
|
||||
- call_rcu(&shost->rcu, scsi_eh_inc_host_failed);
|
||||
+ call_rcu(&scmd->rcu, scsi_eh_inc_host_failed);
|
||||
}
|
||||
|
||||
/**
|
||||
diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c
|
||||
index 5cbc69b..4af1682 100644
|
||||
--- a/drivers/scsi/scsi_lib.c
|
||||
+++ b/drivers/scsi/scsi_lib.c
|
||||
@@ -670,6 +670,7 @@ static bool scsi_end_request(struct request *req, blk_status_t error,
|
||||
if (!blk_rq_is_scsi(req)) {
|
||||
WARN_ON_ONCE(!(cmd->flags & SCMD_INITIALIZED));
|
||||
cmd->flags &= ~SCMD_INITIALIZED;
|
||||
+ destroy_rcu_head(&cmd->rcu);
|
||||
}
|
||||
|
||||
if (req->mq_ctx) {
|
||||
@@ -1150,6 +1151,7 @@ static void scsi_initialize_rq(struct request *rq)
|
||||
struct scsi_cmnd *cmd = blk_mq_rq_to_pdu(rq);
|
||||
|
||||
scsi_req_init(&cmd->req);
|
||||
+ init_rcu_head(&cmd->rcu);
|
||||
cmd->jiffies_at_alloc = jiffies;
|
||||
cmd->retries = 0;
|
||||
}
|
||||
diff --git a/include/scsi/scsi_cmnd.h b/include/scsi/scsi_cmnd.h
|
||||
index 949a016..0382cea 100644
|
||||
--- a/include/scsi/scsi_cmnd.h
|
||||
+++ b/include/scsi/scsi_cmnd.h
|
||||
@@ -69,6 +69,9 @@ struct scsi_cmnd {
|
||||
struct list_head list; /* scsi_cmnd participates in queue lists */
|
||||
struct list_head eh_entry; /* entry for the host eh_cmd_q */
|
||||
struct delayed_work abort_work;
|
||||
+
|
||||
+ struct rcu_head rcu;
|
||||
+
|
||||
int eh_eflags; /* Used by error handlr */
|
||||
|
||||
/*
|
||||
diff --git a/include/scsi/scsi_host.h b/include/scsi/scsi_host.h
|
||||
index 1a1df0d..a8b7bf8 100644
|
||||
--- a/include/scsi/scsi_host.h
|
||||
+++ b/include/scsi/scsi_host.h
|
||||
@@ -571,8 +571,6 @@ struct Scsi_Host {
|
||||
struct blk_mq_tag_set tag_set;
|
||||
};
|
||||
|
||||
- struct rcu_head rcu;
|
||||
-
|
||||
atomic_t host_busy; /* commands actually active on low-level */
|
||||
atomic_t host_blocked;
|
||||
|
||||
--
|
||||
cgit v1.1
|
||||
|
||||
+34
@@ -0,0 +1,34 @@
|
||||
From e39a97353e5378eb46bf01679799c5704d397f32 Mon Sep 17 00:00:00 2001
|
||||
From: Hannes Reinecke <hare@suse.de>
|
||||
Date: Mon, 26 Feb 2018 08:39:59 +0100
|
||||
Subject: scsi: core: return BLK_STS_OK for DID_OK in
|
||||
__scsi_error_from_host_byte()
|
||||
|
||||
When converting __scsi_error_from_host_byte() to BLK_STS error codes the
|
||||
case DID_OK was forgotten, resulting in it always returning an error.
|
||||
|
||||
Fixes: 2a842acab109 ("block: introduce new block status code type")
|
||||
Cc: Doug Gilbert <dgilbert@interlog.com>
|
||||
Signed-off-by: Hannes Reinecke <hare@suse.com>
|
||||
Reviewed-by: Douglas Gilbert <dgilbert@interlog.com>
|
||||
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
|
||||
---
|
||||
drivers/scsi/scsi_lib.c | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c
|
||||
index 4af1682..c984404 100644
|
||||
--- a/drivers/scsi/scsi_lib.c
|
||||
+++ b/drivers/scsi/scsi_lib.c
|
||||
@@ -720,6 +720,8 @@ static blk_status_t __scsi_error_from_host_byte(struct scsi_cmnd *cmd,
|
||||
int result)
|
||||
{
|
||||
switch (host_byte(result)) {
|
||||
+ case DID_OK:
|
||||
+ return BLK_STS_OK;
|
||||
case DID_TRANSPORT_FAILFAST:
|
||||
return BLK_STS_TRANSPORT;
|
||||
case DID_TARGET_FAILURE:
|
||||
--
|
||||
cgit v1.1
|
||||
|
||||
+119
@@ -0,0 +1,119 @@
|
||||
From 1514839b366417934e2f1328edb50ed1e8a719f5 Mon Sep 17 00:00:00 2001
|
||||
From: "himanshu.madhani@cavium.com" <himanshu.madhani@cavium.com>
|
||||
Date: Mon, 12 Feb 2018 10:28:14 -0800
|
||||
Subject: scsi: qla2xxx: Fix NULL pointer crash due to active timer for ABTS
|
||||
|
||||
This patch fixes NULL pointer crash due to active timer running for abort
|
||||
IOCB.
|
||||
|
||||
From crash dump analysis it was discoverd that get_next_timer_interrupt()
|
||||
encountered a corrupted entry on the timer list.
|
||||
|
||||
#9 [ffff95e1f6f0fd40] page_fault at ffffffff914fe8f8
|
||||
[exception RIP: get_next_timer_interrupt+440]
|
||||
RIP: ffffffff90ea3088 RSP: ffff95e1f6f0fdf0 RFLAGS: 00010013
|
||||
RAX: ffff95e1f6451028 RBX: 000218e2389e5f40 RCX: 00000001232ad600
|
||||
RDX: 0000000000000001 RSI: ffff95e1f6f0fdf0 RDI: 0000000001232ad6
|
||||
RBP: ffff95e1f6f0fe40 R8: ffff95e1f6451188 R9: 0000000000000001
|
||||
R10: 0000000000000016 R11: 0000000000000016 R12: 00000001232ad5f6
|
||||
R13: ffff95e1f6450000 R14: ffff95e1f6f0fdf8 R15: ffff95e1f6f0fe10
|
||||
ORIG_RAX: ffffffffffffffff CS: 0010 SS: 0018
|
||||
|
||||
Looking at the assembly of get_next_timer_interrupt(), address came
|
||||
from %r8 (ffff95e1f6451188) which is pointing to list_head with single
|
||||
entry at ffff95e5ff621178.
|
||||
|
||||
0xffffffff90ea307a <get_next_timer_interrupt+426>: mov (%r8),%rdx
|
||||
0xffffffff90ea307d <get_next_timer_interrupt+429>: cmp %r8,%rdx
|
||||
0xffffffff90ea3080 <get_next_timer_interrupt+432>: je 0xffffffff90ea30a7 <get_next_timer_interrupt+471>
|
||||
0xffffffff90ea3082 <get_next_timer_interrupt+434>: nopw 0x0(%rax,%rax,1)
|
||||
0xffffffff90ea3088 <get_next_timer_interrupt+440>: testb $0x1,0x18(%rdx)
|
||||
|
||||
crash> rd ffff95e1f6451188 10
|
||||
ffff95e1f6451188: ffff95e5ff621178 ffff95e5ff621178 x.b.....x.b.....
|
||||
ffff95e1f6451198: ffff95e1f6451198 ffff95e1f6451198 ..E.......E.....
|
||||
ffff95e1f64511a8: ffff95e1f64511a8 ffff95e1f64511a8 ..E.......E.....
|
||||
ffff95e1f64511b8: ffff95e77cf509a0 ffff95e77cf509a0 ...|.......|....
|
||||
ffff95e1f64511c8: ffff95e1f64511c8 ffff95e1f64511c8 ..E.......E.....
|
||||
|
||||
crash> rd ffff95e5ff621178 10
|
||||
ffff95e5ff621178: 0000000000000001 ffff95e15936aa00 ..........6Y....
|
||||
ffff95e5ff621188: 0000000000000000 00000000ffffffff ................
|
||||
ffff95e5ff621198: 00000000000000a0 0000000000000010 ................
|
||||
ffff95e5ff6211a8: ffff95e5ff621198 000000000000000c ..b.............
|
||||
ffff95e5ff6211b8: 00000f5800000000 ffff95e751f8d720 ....X... ..Q....
|
||||
|
||||
ffff95e5ff621178 belongs to freed mempool object at ffff95e5ff621080.
|
||||
|
||||
CACHE NAME OBJSIZE ALLOCATED TOTAL SLABS SSIZE
|
||||
ffff95dc7fd74d00 mnt_cache 384 19785 24948 594 16k
|
||||
SLAB MEMORY NODE TOTAL ALLOCATED FREE
|
||||
ffffdc5dabfd8800 ffff95e5ff620000 1 42 29 13
|
||||
FREE / [ALLOCATED]
|
||||
ffff95e5ff621080 (cpu 6 cache)
|
||||
|
||||
Examining the contents of that memory reveals a pointer to a constant string
|
||||
in the driver, "abort\0", which is set by qla24xx_async_abort_cmd().
|
||||
|
||||
crash> rd ffffffffc059277c 20
|
||||
ffffffffc059277c: 6e490074726f6261 0074707572726574 abort.Interrupt.
|
||||
ffffffffc059278c: 00676e696c6c6f50 6920726576697244 Polling.Driver i
|
||||
ffffffffc059279c: 646f6d207325206e 6974736554000a65 n %s mode..Testi
|
||||
ffffffffc05927ac: 636976656420676e 786c252074612065 ng device at %lx
|
||||
ffffffffc05927bc: 6b63656843000a2e 646f727020676e69 ...Checking prod
|
||||
ffffffffc05927cc: 6f20444920746375 0a2e706968632066 uct ID of chip..
|
||||
ffffffffc05927dc: 5120646e756f4600 204130303232414c .Found QLA2200A
|
||||
ffffffffc05927ec: 43000a2e70696843 20676e696b636568 Chip...Checking
|
||||
ffffffffc05927fc: 65786f626c69616d 6c636e69000a2e73 mailboxes...incl
|
||||
ffffffffc059280c: 756e696c2f656475 616d2d616d642f78 ude/linux/dma-ma
|
||||
|
||||
crash> struct -ox srb_iocb
|
||||
struct srb_iocb {
|
||||
union {
|
||||
struct {...} logio;
|
||||
struct {...} els_logo;
|
||||
struct {...} tmf;
|
||||
struct {...} fxiocb;
|
||||
struct {...} abt;
|
||||
struct ct_arg ctarg;
|
||||
struct {...} mbx;
|
||||
struct {...} nack;
|
||||
[0x0 ] } u;
|
||||
[0xb8] struct timer_list timer;
|
||||
[0x108] void (*timeout)(void *);
|
||||
}
|
||||
SIZE: 0x110
|
||||
|
||||
crash> ! bc
|
||||
ibase=16
|
||||
obase=10
|
||||
B8+40
|
||||
F8
|
||||
|
||||
The object is a srb_t, and at offset 0xf8 within that structure
|
||||
(i.e. ffff95e5ff621080 + f8 -> ffff95e5ff621178) is a struct timer_list.
|
||||
|
||||
Cc: <stable@vger.kernel.org> #4.4+
|
||||
Fixes: 4440e46d5db7 ("[SCSI] qla2xxx: Add IOCB Abort command asynchronous handling.")
|
||||
Signed-off-by: Himanshu Madhani <himanshu.madhani@cavium.com>
|
||||
Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de>
|
||||
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
|
||||
---
|
||||
drivers/scsi/qla2xxx/qla_init.c | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/drivers/scsi/qla2xxx/qla_init.c b/drivers/scsi/qla2xxx/qla_init.c
|
||||
index 2dea112..0487062 100644
|
||||
--- a/drivers/scsi/qla2xxx/qla_init.c
|
||||
+++ b/drivers/scsi/qla2xxx/qla_init.c
|
||||
@@ -1527,6 +1527,7 @@ qla24xx_abort_sp_done(void *ptr, int res)
|
||||
srb_t *sp = ptr;
|
||||
struct srb_iocb *abt = &sp->u.iocb_cmd;
|
||||
|
||||
+ del_timer(&sp->u.iocb_cmd.timer);
|
||||
complete(&abt->u.abt.comp);
|
||||
}
|
||||
|
||||
--
|
||||
cgit v1.1
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
###
|
||||
### Stable Queue
|
||||
###
|
||||
patch-4.14.25-rc1.patch
|
||||
|
||||
###
|
||||
### Arch x86
|
||||
@@ -45,35 +46,40 @@ pti32bit-0003-x86-entry-32-Load-task-stack-from-x86_tss.sp1-in-SYS.patch
|
||||
pti32bit-0004-x86-entry-32-Put-ESPFIX-code-into-a-macro.patch
|
||||
pti32bit-0005-x86-entry-32-Unshare-NMI-return-path.patch
|
||||
pti32bit-0006-x86-entry-32-Split-off-return-to-kernel-path.patch
|
||||
# could be disabled as not needed according to Linus @ LKML
|
||||
pti32bit-0007-x86-entry-32-Restore-segments-before-int-registers.patch
|
||||
pti32bit-0008-x86-entry-32-Enter-the-kernel-via-trampoline-stack.patch
|
||||
pti32bit-0009-x86-entry-32-Leave-the-kernel-via-trampoline-stack.patch
|
||||
pti32bit-0010-x86-entry-32-Introduce-SAVE_ALL_NMI-and-RESTORE_ALL_.patch
|
||||
pti32bit-0011-x86-entry-32-Add-PTI-cr3-switches-to-NMI-handler-cod.patch
|
||||
pti32bit-0012-x86-entry-32-Add-PTI-cr3-switch-to-non-NMI-entry-exi.patch
|
||||
pti32bit-0013-x86-entry-32-Handle-Entry-from-Kernel-Mode-on-Entry-.patch
|
||||
pti32bit-0014-x86-pgtable-pae-Unshare-kernel-PMDs-when-PTI-is-enab.patch
|
||||
pti32bit-0015-x86-pgtable-32-Allocate-8k-page-tables-when-PTI-is-e.patch
|
||||
pti32bit-0016-x86-pgtable-Move-pgdp-kernel-user-conversion-functio.patch
|
||||
pti32bit-0017-x86-pgtable-Move-pti_set_user_pgd-to-pgtable.h.patch
|
||||
pti32bit-0018-x86-pgtable-Move-two-more-functions-from-pgtable_64..patch
|
||||
pti32bit-0019-x86-mm-pae-Populate-valid-user-PGD-entries.patch
|
||||
pti32bit-0020-x86-mm-pae-Populate-the-user-page-table-with-user-pg.patch
|
||||
pti32bit-0021-x86-mm-legacy-Populate-the-user-page-table-with-user.patch
|
||||
pti32bit-0022-x86-mm-pti-Add-an-overflow-check-to-pti_clone_pmds.patch
|
||||
pti32bit-0023-x86-mm-pti-Define-X86_CR3_PTI_PCID_USER_BIT-on-x86_3.patch
|
||||
pti32bit-0024-x86-mm-pti-Clone-CPU_ENTRY_AREA-on-PMD-level-on-x86_.patch
|
||||
pti32bit-0025-x86-mm-dump_pagetables-Define-INIT_PGD.patch
|
||||
pti32bit-0026-x86-pgtable-pae-Use-separate-kernel-PMDs-for-user-pa.patch
|
||||
pti32bit-0027-x86-ldt-Reserve-address-space-range-on-32-bit-for-th.patch
|
||||
pti32bit-0028-x86-ldt-Define-LDT_END_ADDR.patch
|
||||
pti32bit-0029-x86-ldt-Split-out-sanity-check-in-map_ldt_struct.patch
|
||||
pti32bit-0030-x86-ldt-Enable-LDT-user-mapping-for-PAE.patch
|
||||
pti32bit-0031-x86-pti-Allow-CONFIG_PAGE_TABLE_ISOLATION-for-x86_32.patch
|
||||
pti32bit-0011-x86-entry-32-Handle-Entry-from-Kernel-Mode-on-Entry-.patch
|
||||
pti32bit-0012-x86-entry-32-Simplify-debug-entry-point.patch
|
||||
pti32bit-0013-x86-entry-32-Add-PTI-cr3-switches-to-NMI-handler-cod.patch
|
||||
pti32bit-0014-x86-entry-32-Add-PTI-cr3-switch-to-non-NMI-entry-exi.patch
|
||||
pti32bit-0015-x86-pgtable-Rename-pti_set_user_pgd-to-pti_set_user_.patch
|
||||
pti32bit-0016-x86-pgtable-pae-Unshare-kernel-PMDs-when-PTI-is-enab.patch
|
||||
pti32bit-0017-x86-pgtable-32-Allocate-8k-page-tables-when-PTI-is-e.patch
|
||||
pti32bit-0018-x86-pgtable-Move-pgdp-kernel-user-conversion-functio.patch
|
||||
pti32bit-0019-x86-pgtable-Move-pti_set_user_pgtbl-to-pgtable.h.patch
|
||||
pti32bit-0020-x86-pgtable-Move-two-more-functions-from-pgtable_64..patch
|
||||
pti32bit-0021-x86-mm-pae-Populate-valid-user-PGD-entries.patch
|
||||
pti32bit-0022-x86-mm-pae-Populate-the-user-page-table-with-user-pg.patch
|
||||
pti32bit-0023-x86-mm-legacy-Populate-the-user-page-table-with-user.patch
|
||||
pti32bit-0024-x86-mm-pti-Add-an-overflow-check-to-pti_clone_pmds.patch
|
||||
pti32bit-0025-x86-mm-pti-Define-X86_CR3_PTI_PCID_USER_BIT-on-x86_3.patch
|
||||
pti32bit-0026-x86-mm-pti-Clone-CPU_ENTRY_AREA-on-PMD-level-on-x86_.patch
|
||||
pti32bit-0027-x86-mm-dump_pagetables-Define-INIT_PGD.patch
|
||||
pti32bit-0028-x86-pgtable-pae-Use-separate-kernel-PMDs-for-user-pa.patch
|
||||
pti32bit-0029-x86-ldt-Reserve-address-space-range-on-32-bit-for-th.patch
|
||||
pti32bit-0030-x86-ldt-Define-LDT_END_ADDR.patch
|
||||
pti32bit-0031-x86-ldt-Split-out-sanity-check-in-map_ldt_struct.patch
|
||||
pti32bit-0032-x86-ldt-Enable-LDT-user-mapping-for-PAE.patch
|
||||
pti32bit-0033-x86-pti-Allow-CONFIG_PAGE_TABLE_ISOLATION-for-x86_32.patch
|
||||
pti32bit-0034-x86-mm-pti-Add-Warning-when-booting-on-a-PCID-capabl.patch
|
||||
# tone down warning about PCID on 32bit
|
||||
pti32bit-0100-tone-down-PCID-on-32bit-message.patch
|
||||
|
||||
# selected fixes from x86/pti
|
||||
x86-pti-0070-nospec-Kill-array_index_nospec_mask_check.patch
|
||||
x86-pti-0071-nospec-Allow-index-argument-to-have-const-qualified-.patch
|
||||
x86-pti-0072-nospec-Include-asm-barrier.h-dependency.patch
|
||||
x86-pti-0073-x86-microcode-Propagate-return-value-from-updating-f.patch
|
||||
x86-pti-0074-x86-CPU-Add-a-microcode-loader-callback.patch
|
||||
@@ -186,6 +192,15 @@ block-bfq-limit-sectors-served-with-interactive-weig.patch
|
||||
block-bfq-put-async-queues-for-root-bfq-groups-too.patch
|
||||
block-bfq-add-requeue-request-hook.patch
|
||||
|
||||
# HPT RR 644L
|
||||
ata-ahci-Add-PCI-id-for-the-Highpoint-Rocketraid-644L-card.patch
|
||||
PCI-Add-function-1-DMA-alias-quirk-for-Highpoint-RocketRAID-644L.patch
|
||||
|
||||
# scsi
|
||||
scsi-core-Avoid-that-ATA-error-handling-can-trigger-a-kernel-hang-or-oops.patch
|
||||
scsi-core-return-BLK_STS_OK-for-DID_OK-in-__scsi_error_from_host_byte.patch
|
||||
scsi-qla2xxx-Fix-NULL-pointer-crash-due-to-active-timer-for-ABTS.patch
|
||||
|
||||
###
|
||||
### Char
|
||||
###
|
||||
@@ -251,6 +266,10 @@ hwmon-k10temp-Add-support-for-temperature-offsets.patch
|
||||
|
||||
input-i8042-quirks-for-Fujitsu-Lifebook-A544-and-Lif.patch
|
||||
|
||||
# mga #22703
|
||||
input-goodix-disable-IRQs-while-suspended.patch
|
||||
input-goodix-add-support-for-GDIX1002.patch
|
||||
|
||||
###
|
||||
### idle
|
||||
###
|
||||
@@ -309,6 +328,9 @@ net-tls-Correct-length-of-scatterlist-in-tls_sw_sendpage.patch
|
||||
# silence message that gets reported as a bug
|
||||
net-netfilter-xt_addrtype-silence-BROADCAST-message.patch
|
||||
|
||||
# CVE-2018-1065
|
||||
net-netfilter-add-back-stackpointer-size-checks.patch
|
||||
|
||||
###
|
||||
### pinctrl
|
||||
###
|
||||
@@ -340,6 +362,12 @@ platform-x86-ideapad-laptop-Increase-timeout-to-wait-for-ec-answer.patch
|
||||
### Sound
|
||||
###
|
||||
|
||||
sound-ALSA-hda-Fix-a-wrong-FIXUP-for-alc289-on-Dell-machines.patch
|
||||
|
||||
# skl/kbl fixes
|
||||
sound-ASoC-Intel-Skylake-Fix-jack-name-format-substitution.patch
|
||||
sound-ASoC-Intel-kbl-fix-jack-name.patch
|
||||
|
||||
###
|
||||
### Staging
|
||||
###
|
||||
@@ -448,6 +476,8 @@ video-mageia-logo.patch
|
||||
### ARM
|
||||
###
|
||||
|
||||
arch-ARM-omap2-hide-omap3_save_secure_ram-on-non-OMAP3-bu.patch
|
||||
|
||||
###
|
||||
### IA64
|
||||
###
|
||||
|
||||
+35
@@ -0,0 +1,35 @@
|
||||
From: Hui Wang <hui.wang@canonical.com>
|
||||
Subject: [PATCH] ALSA: hda - Fix a wrong FIXUP for alc289 on Dell machines
|
||||
Date: Fri, 2 Mar 2018 13:05:36 +0800
|
||||
|
||||
With the alc289, the Pin 0x1b is Headphone-Mic, so we should assign
|
||||
ALC269_FIXUP_DELL4_MIC_NO_PRESENCE rather than
|
||||
ALC225_FIXUP_DELL1_MIC_NO_PRESENCE to it. And this change is suggested
|
||||
by Kailang of Realtek and is verified on the machine.
|
||||
|
||||
(This fixes the commit 3f2f7c55)
|
||||
|
||||
Cc: Kailang Yang <kailang@realtek.com>
|
||||
Cc: <stable@vger.kernel.org>
|
||||
Signed-off-by: Hui Wang <hui.wang@canonical.com>
|
||||
---
|
||||
sound/pci/hda/patch_realtek.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
|
||||
index b9c93fa..7a9a867 100644
|
||||
--- a/sound/pci/hda/patch_realtek.c
|
||||
+++ b/sound/pci/hda/patch_realtek.c
|
||||
@@ -6872,7 +6872,7 @@ static const struct snd_hda_pin_quirk alc269_pin_fixup_tbl[] = {
|
||||
{0x12, 0x90a60120},
|
||||
{0x14, 0x90170110},
|
||||
{0x21, 0x0321101f}),
|
||||
- SND_HDA_PIN_QUIRK(0x10ec0289, 0x1028, "Dell", ALC225_FIXUP_DELL1_MIC_NO_PRESENCE,
|
||||
+ SND_HDA_PIN_QUIRK(0x10ec0289, 0x1028, "Dell", ALC269_FIXUP_DELL4_MIC_NO_PRESENCE,
|
||||
{0x12, 0xb7a60130},
|
||||
{0x14, 0x90170110},
|
||||
{0x21, 0x04211020}),
|
||||
--
|
||||
2.7.4
|
||||
|
||||
|
||||
+35
@@ -0,0 +1,35 @@
|
||||
From d1c4cb447a7efcb5608a33cdfed8ab4234378b0a Mon Sep 17 00:00:00 2001
|
||||
From: Chintan Patel <chintan.m.patel@intel.com>
|
||||
Date: Mon, 18 Sep 2017 08:43:18 -0700
|
||||
Subject: [PATCH] ASoC: Intel: Skylake: Fix jack name format substitution
|
||||
|
||||
Jack name is not getting formatted correctly hence resulting
|
||||
in invalid name for HDMI/DP input devices.
|
||||
|
||||
This was recently exposed due changes brought by MST:
|
||||
commit 3a13347f05fd ("ASoC: Intel: kbl: Add jack port initialize
|
||||
in kbl machine drivers")
|
||||
|
||||
Signed-off-by: Chintan Patel <chintan.m.patel@intel.com>
|
||||
Acked-By: Vinod Koul <vinod.koul@intel.com>
|
||||
Signed-off-by: Mark Brown <broonie@kernel.org>
|
||||
---
|
||||
sound/soc/intel/boards/kbl_rt5663_rt5514_max98927.c | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
diff --git a/sound/soc/intel/boards/kbl_rt5663_rt5514_max98927.c b/sound/soc/intel/boards/kbl_rt5663_rt5514_max98927.c
|
||||
index 88ff54220007..9cd0769ccd34 100644
|
||||
--- a/sound/soc/intel/boards/kbl_rt5663_rt5514_max98927.c
|
||||
+++ b/sound/soc/intel/boards/kbl_rt5663_rt5514_max98927.c
|
||||
@@ -604,6 +604,8 @@ static int kabylake_card_late_probe(struct snd_soc_card *card)
|
||||
|
||||
list_for_each_entry(pcm, &ctx->hdmi_pcm_list, head) {
|
||||
codec = pcm->codec_dai->codec;
|
||||
+ snprintf(jack_name, sizeof(jack_name),
|
||||
+ "HDMI/DP, pcm=%d Jack", pcm->device);
|
||||
err = snd_soc_card_jack_new(card, jack_name,
|
||||
SND_JACK_AVOUT, &ctx->kabylake_hdmi[i],
|
||||
NULL, 0);
|
||||
--
|
||||
2.16.2
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
From cedb6415f9ece6d3368aa0ac8a433caff799792a Mon Sep 17 00:00:00 2001
|
||||
From: Vinod Koul <vinod.koul@intel.com>
|
||||
Date: Tue, 31 Oct 2017 16:47:27 +0530
|
||||
Subject: [PATCH] ASoC: Intel: kbl: fix jack name
|
||||
|
||||
Commit d1c4cb447a7e ("ASoC: Intel: Skylake: Fix jack name format
|
||||
substitution") added Jack name but erroneously added a space as well,
|
||||
so remove the space in Jack name.
|
||||
|
||||
Fixes: d1c4cb447a7e ("ASoC: Intel: Skylake: Fix jack name format substitution")
|
||||
Signed-off-by: Vinod Koul <vinod.koul@intel.com>
|
||||
Signed-off-by: Mark Brown <broonie@kernel.org>
|
||||
---
|
||||
sound/soc/intel/boards/kbl_rt5663_rt5514_max98927.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/sound/soc/intel/boards/kbl_rt5663_rt5514_max98927.c b/sound/soc/intel/boards/kbl_rt5663_rt5514_max98927.c
|
||||
index 9cd0769ccd34..69ab55956492 100644
|
||||
--- a/sound/soc/intel/boards/kbl_rt5663_rt5514_max98927.c
|
||||
+++ b/sound/soc/intel/boards/kbl_rt5663_rt5514_max98927.c
|
||||
@@ -605,7 +605,7 @@ static int kabylake_card_late_probe(struct snd_soc_card *card)
|
||||
list_for_each_entry(pcm, &ctx->hdmi_pcm_list, head) {
|
||||
codec = pcm->codec_dai->codec;
|
||||
snprintf(jack_name, sizeof(jack_name),
|
||||
- "HDMI/DP, pcm=%d Jack", pcm->device);
|
||||
+ "HDMI/DP,pcm=%d Jack", pcm->device);
|
||||
err = snd_soc_card_jack_new(card, jack_name,
|
||||
SND_JACK_AVOUT, &ctx->kabylake_hdmi[i],
|
||||
NULL, 0);
|
||||
--
|
||||
2.16.2
|
||||
|
||||
-65
@@ -1,65 +0,0 @@
|
||||
From b98c6a160a057d5686a8c54c79cc6c8c94a7d0c8 Mon Sep 17 00:00:00 2001
|
||||
From: Rasmus Villemoes <linux@rasmusvillemoes.dk>
|
||||
Date: Fri, 16 Feb 2018 13:20:48 -0800
|
||||
Subject: [PATCH 71/77] nospec: Allow index argument to have const-qualified
|
||||
type
|
||||
|
||||
The last expression in a statement expression need not be a bare
|
||||
variable, quoting gcc docs
|
||||
|
||||
The last thing in the compound statement should be an expression
|
||||
followed by a semicolon; the value of this subexpression serves as the
|
||||
value of the entire construct.
|
||||
|
||||
and we already use that in e.g. the min/max macros which end with a
|
||||
ternary expression.
|
||||
|
||||
This way, we can allow index to have const-qualified type, which will in
|
||||
some cases avoid the need for introducing a local copy of index of
|
||||
non-const qualified type. That, in turn, can prevent readers not
|
||||
familiar with the internals of array_index_nospec from wondering about
|
||||
the seemingly redundant extra variable, and I think that's worthwhile
|
||||
considering how confusing the whole _nospec business is.
|
||||
|
||||
The expression _i&_mask has type unsigned long (since that is the type
|
||||
of _mask, and the BUILD_BUG_ONs guarantee that _i will get promoted to
|
||||
that), so in order not to change the type of the whole expression, add
|
||||
a cast back to typeof(_i).
|
||||
|
||||
Signed-off-by: Rasmus Villemoes <linux@rasmusvillemoes.dk>
|
||||
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
|
||||
Acked-by: Linus Torvalds <torvalds@linux-foundation.org>
|
||||
Cc: Andy Lutomirski <luto@kernel.org>
|
||||
Cc: Arjan van de Ven <arjan@linux.intel.com>
|
||||
Cc: Borislav Petkov <bp@alien8.de>
|
||||
Cc: Dave Hansen <dave.hansen@linux.intel.com>
|
||||
Cc: David Woodhouse <dwmw2@infradead.org>
|
||||
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
Cc: Josh Poimboeuf <jpoimboe@redhat.com>
|
||||
Cc: Peter Zijlstra <peterz@infradead.org>
|
||||
Cc: Thomas Gleixner <tglx@linutronix.de>
|
||||
Cc: Will Deacon <will.deacon@arm.com>
|
||||
Cc: linux-arch@vger.kernel.org
|
||||
Cc: stable@vger.kernel.org
|
||||
Link: http://lkml.kernel.org/r/151881604837.17395.10812767547837568328.stgit@dwillia2-desk3.amr.corp.intel.com
|
||||
Signed-off-by: Ingo Molnar <mingo@kernel.org>
|
||||
---
|
||||
include/linux/nospec.h | 3 +--
|
||||
1 file changed, 1 insertion(+), 2 deletions(-)
|
||||
|
||||
diff --git a/include/linux/nospec.h b/include/linux/nospec.h
|
||||
index d6701e34424f..172a19dc35ab 100644
|
||||
--- a/include/linux/nospec.h
|
||||
+++ b/include/linux/nospec.h
|
||||
@@ -52,7 +52,6 @@ static inline unsigned long array_index_mask_nospec(unsigned long index,
|
||||
BUILD_BUG_ON(sizeof(_i) > sizeof(long)); \
|
||||
BUILD_BUG_ON(sizeof(_s) > sizeof(long)); \
|
||||
\
|
||||
- _i &= _mask; \
|
||||
- _i; \
|
||||
+ (typeof(_i)) (_i & _mask); \
|
||||
})
|
||||
#endif /* _LINUX_NOSPEC_H */
|
||||
--
|
||||
2.16.1
|
||||
|
||||
+47
-33
@@ -28,8 +28,8 @@
|
||||
</BuildDependencies>
|
||||
<Patches>
|
||||
<!-- Linux patches -->
|
||||
<Patch level="1" compressionType="xz">patches/linux/patch-4.14.23.xz</Patch>
|
||||
<!-- Mageia Linux patches // compatible with http://svnweb.mageia.org/packages/cauldron/kernel/releases/4.14.22/1.mga7/PATCHES/patches/series-->
|
||||
<Patch level="1" compressionType="xz">patches/linux/patch-4.14.24.xz</Patch>
|
||||
<!-- Mageia Linux patches // compatible with http://svnweb.mageia.org/packages/cauldron/kernel/releases/4.14.24/1.mga7/PATCHES/patches/series-->
|
||||
<!--stable patches-->
|
||||
<!--CVE-2016-8405-->
|
||||
<!--other patches-->
|
||||
@@ -48,29 +48,31 @@
|
||||
<Patch level="1">patches/mageia/pti32bit-0008-x86-entry-32-Enter-the-kernel-via-trampoline-stack.patch</Patch>
|
||||
<Patch level="1">patches/mageia/pti32bit-0009-x86-entry-32-Leave-the-kernel-via-trampoline-stack.patch</Patch>
|
||||
<Patch level="1">patches/mageia/pti32bit-0010-x86-entry-32-Introduce-SAVE_ALL_NMI-and-RESTORE_ALL_.patch</Patch>
|
||||
<Patch level="1">patches/mageia/pti32bit-0011-x86-entry-32-Add-PTI-cr3-switches-to-NMI-handler-cod.patch</Patch>
|
||||
<Patch level="1">patches/mageia/pti32bit-0012-x86-entry-32-Add-PTI-cr3-switch-to-non-NMI-entry-exi.patch</Patch>
|
||||
<Patch level="1">patches/mageia/pti32bit-0013-x86-entry-32-Handle-Entry-from-Kernel-Mode-on-Entry-.patch</Patch>
|
||||
<Patch level="1">patches/mageia/pti32bit-0014-x86-pgtable-pae-Unshare-kernel-PMDs-when-PTI-is-enab.patch</Patch>
|
||||
<Patch level="1">patches/mageia/pti32bit-0015-x86-pgtable-32-Allocate-8k-page-tables-when-PTI-is-e.patch</Patch>
|
||||
<Patch level="1">patches/mageia/pti32bit-0016-x86-pgtable-Move-pgdp-kernel-user-conversion-functio.patch</Patch>
|
||||
<Patch level="1">patches/mageia/pti32bit-0017-x86-pgtable-Move-pti_set_user_pgd-to-pgtable.h.patch</Patch>
|
||||
<Patch level="1">patches/mageia/pti32bit-0018-x86-pgtable-Move-two-more-functions-from-pgtable_64..patch</Patch>
|
||||
<Patch level="1">patches/mageia/pti32bit-0019-x86-mm-pae-Populate-valid-user-PGD-entries.patch</Patch>
|
||||
<Patch level="1">patches/mageia/pti32bit-0020-x86-mm-pae-Populate-the-user-page-table-with-user-pg.patch</Patch>
|
||||
<Patch level="1">patches/mageia/pti32bit-0021-x86-mm-legacy-Populate-the-user-page-table-with-user.patch</Patch>
|
||||
<Patch level="1">patches/mageia/pti32bit-0022-x86-mm-pti-Add-an-overflow-check-to-pti_clone_pmds.patch</Patch>
|
||||
<Patch level="1">patches/mageia/pti32bit-0023-x86-mm-pti-Define-X86_CR3_PTI_PCID_USER_BIT-on-x86_3.patch</Patch>
|
||||
<Patch level="1">patches/mageia/pti32bit-0024-x86-mm-pti-Clone-CPU_ENTRY_AREA-on-PMD-level-on-x86_.patch</Patch>
|
||||
<Patch level="1">patches/mageia/pti32bit-0025-x86-mm-dump_pagetables-Define-INIT_PGD.patch</Patch>
|
||||
<Patch level="1">patches/mageia/pti32bit-0026-x86-pgtable-pae-Use-separate-kernel-PMDs-for-user-pa.patch</Patch>
|
||||
<Patch level="1">patches/mageia/pti32bit-0027-x86-ldt-Reserve-address-space-range-on-32-bit-for-th.patch</Patch>
|
||||
<Patch level="1">patches/mageia/pti32bit-0028-x86-ldt-Define-LDT_END_ADDR.patch</Patch>
|
||||
<Patch level="1">patches/mageia/pti32bit-0029-x86-ldt-Split-out-sanity-check-in-map_ldt_struct.patch</Patch>
|
||||
<Patch level="1">patches/mageia/pti32bit-0030-x86-ldt-Enable-LDT-user-mapping-for-PAE.patch</Patch>
|
||||
<Patch level="1">patches/mageia/pti32bit-0031-x86-pti-Allow-CONFIG_PAGE_TABLE_ISOLATION-for-x86_32.patch</Patch>
|
||||
<Patch level="1">patches/mageia/pti32bit-0011-x86-entry-32-Handle-Entry-from-Kernel-Mode-on-Entry-.patch</Patch>
|
||||
<Patch level="1">patches/mageia/pti32bit-0012-x86-entry-32-Simplify-debug-entry-point.patch</Patch>
|
||||
<Patch level="1">patches/mageia/pti32bit-0013-x86-entry-32-Add-PTI-cr3-switches-to-NMI-handler-cod.patch</Patch>
|
||||
<Patch level="1">patches/mageia/pti32bit-0014-x86-entry-32-Add-PTI-cr3-switch-to-non-NMI-entry-exi.patch</Patch>
|
||||
<Patch level="1">patches/mageia/pti32bit-0015-x86-pgtable-Rename-pti_set_user_pgd-to-pti_set_user_.patch</Patch>
|
||||
<Patch level="1">patches/mageia/pti32bit-0016-x86-pgtable-pae-Unshare-kernel-PMDs-when-PTI-is-enab.patch</Patch>
|
||||
<Patch level="1">patches/mageia/pti32bit-0017-x86-pgtable-32-Allocate-8k-page-tables-when-PTI-is-e.patch</Patch>
|
||||
<Patch level="1">patches/mageia/pti32bit-0018-x86-pgtable-Move-pgdp-kernel-user-conversion-functio.patch</Patch>
|
||||
<Patch level="1">patches/mageia/pti32bit-0019-x86-pgtable-Move-pti_set_user_pgtbl-to-pgtable.h.patch</Patch>
|
||||
<Patch level="1">patches/mageia/pti32bit-0020-x86-pgtable-Move-two-more-functions-from-pgtable_64..patch</Patch>
|
||||
<Patch level="1">patches/mageia/pti32bit-0021-x86-mm-pae-Populate-valid-user-PGD-entries.patch</Patch>
|
||||
<Patch level="1">patches/mageia/pti32bit-0022-x86-mm-pae-Populate-the-user-page-table-with-user-pg.patch</Patch>
|
||||
<Patch level="1">patches/mageia/pti32bit-0023-x86-mm-legacy-Populate-the-user-page-table-with-user.patch</Patch>
|
||||
<Patch level="1">patches/mageia/pti32bit-0024-x86-mm-pti-Add-an-overflow-check-to-pti_clone_pmds.patch</Patch>
|
||||
<Patch level="1">patches/mageia/pti32bit-0025-x86-mm-pti-Define-X86_CR3_PTI_PCID_USER_BIT-on-x86_3.patch</Patch>
|
||||
<Patch level="1">patches/mageia/pti32bit-0026-x86-mm-pti-Clone-CPU_ENTRY_AREA-on-PMD-level-on-x86_.patch</Patch>
|
||||
<Patch level="1">patches/mageia/pti32bit-0027-x86-mm-dump_pagetables-Define-INIT_PGD.patch</Patch>
|
||||
<Patch level="1">patches/mageia/pti32bit-0028-x86-pgtable-pae-Use-separate-kernel-PMDs-for-user-pa.patch</Patch>
|
||||
<Patch level="1">patches/mageia/pti32bit-0029-x86-ldt-Reserve-address-space-range-on-32-bit-for-th.patch</Patch>
|
||||
<Patch level="1">patches/mageia/pti32bit-0030-x86-ldt-Define-LDT_END_ADDR.patch</Patch>
|
||||
<Patch level="1">patches/mageia/pti32bit-0031-x86-ldt-Split-out-sanity-check-in-map_ldt_struct.patch</Patch>
|
||||
<Patch level="1">patches/mageia/pti32bit-0032-x86-ldt-Enable-LDT-user-mapping-for-PAE.patch</Patch>
|
||||
<Patch level="1">patches/mageia/pti32bit-0033-x86-pti-Allow-CONFIG_PAGE_TABLE_ISOLATION-for-x86_32.patch</Patch>
|
||||
<Patch level="1">patches/mageia/pti32bit-0034-x86-mm-pti-Add-Warning-when-booting-on-a-PCID-capabl.patch</Patch>
|
||||
<Patch level="1">patches/mageia/x86-pti-0070-nospec-Kill-array_index_nospec_mask_check.patch</Patch>
|
||||
<Patch level="1">patches/mageia/x86-pti-0071-nospec-Allow-index-argument-to-have-const-qualified-.patch</Patch>
|
||||
<Patch level="1">patches/mageia/x86-pti-0072-nospec-Include-asm-barrier.h-dependency.patch</Patch>
|
||||
<Patch level="1">patches/mageia/x86-pti-0073-x86-microcode-Propagate-return-value-from-updating-f.patch</Patch>
|
||||
<Patch level="1">patches/mageia/x86-pti-0074-x86-CPU-Add-a-microcode-loader-callback.patch</Patch>
|
||||
@@ -84,12 +86,12 @@
|
||||
<Patch level="1">patches/mageia/acpi-processor-M720SR-limit-to-C2.patch</Patch>
|
||||
<Patch level="1">patches/mageia/ACPI-video-Add-a-quirk-to-force-acpi-video-backlight.patch</Patch>
|
||||
<Patch level="1">patches/mageia/acpi-ec-restore-polling-during-noirq-suspend_resume-phases.patch</Patch>
|
||||
<!--Patch level="1">patches/mageia/scsi-ppscsi-2.6.2.patch</Patch>
|
||||
<!--1--><Patch level="1">patches/mageia/scsi-ppscsi-2.6.2.patch</Patch>
|
||||
<Patch level="1">patches/mageia/scsi-ppscsi_fixes.patch</Patch>
|
||||
<Patch level="1">patches/mageia/scsi-ppscsi-sg-helper-update.patch</Patch>
|
||||
<Patch level="1">patches/mageia/scsi-ppscsi-update-for-scsi_data_buffer.patch</Patch>
|
||||
<Patch level="1">patches/mageia/scsi-ppscsi-mdvbz45393.patch</Patch>
|
||||
<Patch level="1">patches/mageia/scsi-ppscsi-3.0-buildfix.patch</Patch-->
|
||||
<Patch level="1">patches/mageia/scsi-ppscsi-3.0-buildfix.patch</Patch><!--1-->
|
||||
<Patch level="1">patches/mageia/scsi-megaraid-new-sysfs-name.patch</Patch>
|
||||
<Patch level="1">patches/mageia/ide-pci-sis5513-965.patch</Patch>
|
||||
<Patch level="1">patches/mageia/mpt-vmware-fix.patch</Patch>
|
||||
@@ -119,6 +121,11 @@
|
||||
<Patch level="1">patches/mageia/block-bfq-limit-sectors-served-with-interactive-weig.patch</Patch>
|
||||
<Patch level="1">patches/mageia/block-bfq-add-requeue-request-hook.patch</Patch>
|
||||
<Patch level="1">patches/mageia/block-bfq-put-async-queues-for-root-bfq-groups-too.patch</Patch>
|
||||
<Patch level="1">patches/mageia/ata-ahci-Add-PCI-id-for-the-Highpoint-Rocketraid-644L-card.patch</Patch>
|
||||
<Patch level="1">patches/mageia/PCI-Add-function-1-DMA-alias-quirk-for-Highpoint-RocketRAID-644L.patch</Patch>
|
||||
<Patch level="1">patches/mageia/scsi-core-Avoid-that-ATA-error-handling-can-trigger-a-kernel-hang-or-oops.patch</Patch>
|
||||
<Patch level="1">patches/mageia/scsi-core-return-BLK_STS_OK-for-DID_OK-in-__scsi_error_from_host_byte.patch</Patch>
|
||||
<Patch level="1">patches/mageia/scsi-qla2xxx-Fix-NULL-pointer-crash-due-to-active-timer-for-ABTS.patch</Patch>
|
||||
<Patch level="1">patches/mageia/fs-aufs-4.14.patch</Patch>
|
||||
<Patch level="1">patches/mageia/fs-aufs-4.14-modular.patch</Patch>
|
||||
<Patch level="1">patches/mageia/fs-aufs-include-vmalloc.patch</Patch>
|
||||
@@ -145,6 +152,8 @@
|
||||
<Patch level="1">patches/mageia/hwmon-k10temp-Add-support-for-family-17h.patch</Patch>
|
||||
<Patch level="1">patches/mageia/hwmon-k10temp-Add-support-for-temperature-offsets.patch</Patch>
|
||||
<Patch level="1">patches/mageia/input-i8042-quirks-for-Fujitsu-Lifebook-A544-and-Lif.patch</Patch>
|
||||
<Patch level="1">patches/mageia/input-goodix-disable-IRQs-while-suspended.patch</Patch>
|
||||
<Patch level="1">patches/mageia/input-goodix-add-support-for-GDIX1002.patch</Patch>
|
||||
<Patch level="1">patches/mageia/mm-page_vma_mapped-Introduce-pfn_in_hpage.patch</Patch>
|
||||
<Patch level="1">patches/mageia/net-sis190-fix-list-usage.patch</Patch>
|
||||
<Patch level="1">patches/mageia/net-netfilter-IFWLOG.patch</Patch>
|
||||
@@ -162,17 +171,21 @@
|
||||
<Patch level="1">patches/mageia/net-WireGuard.patch</Patch>
|
||||
<Patch level="1">patches/mageia/net-tls-Correct-length-of-scatterlist-in-tls_sw_sendpage.patch</Patch>
|
||||
<Patch level="1">patches/mageia/net-netfilter-xt_addrtype-silence-BROADCAST-message.patch</Patch>
|
||||
<Patch level="1">patches/mageia/net-netfilter-add-back-stackpointer-size-checks.patch</Patch>
|
||||
<Patch level="1">patches/mageia/platform-x86-add-shuttle-wmi-driver.patch</Patch>
|
||||
<Patch level="1">patches/mageia/platform-x86-shuttle-wmi-drop-devinit-exit.patch</Patch>
|
||||
<Patch level="1">patches/mageia/platform-x86-shuttle-wmi-4.2-buildfix.patch</Patch>
|
||||
<Patch level="1">patches/mageia/platform-x86-shuttle-wmi-4.13-buildfix.patch</Patch>
|
||||
<Patch level="1">patches/mageia/platform-x86-ideapad-Add-IdeaPad-320-15IKB-to-no_hw_rfkill_list.patch</Patch>
|
||||
<Patch level="1">patches/mageia/platform-x86-ideapad-laptop-Increase-timeout-to-wait-for-ec-answer.patch</Patch>
|
||||
<Patch level="1">patches/mageia/platform-x86-ideapad-laptop-Increase-timeout-to-wait-for-ec-answer.patch</Patch>
|
||||
<Patch level="1">patches/mageia/sound-ALSA-hda-Fix-a-wrong-FIXUP-for-alc289-on-Dell-machines.patch</Patch>
|
||||
<Patch level="1">patches/mageia/sound-ASoC-Intel-Skylake-Fix-jack-name-format-substitution.patch</Patch>
|
||||
<Patch level="1">patches/mageia/sound-ASoC-Intel-kbl-fix-jack-name.patch</Patch>
|
||||
<Patch level="1">patches/mageia/hid-usbhid-IBM-BladeCenterHS20-quirk.patch</Patch>
|
||||
<Patch level="1">patches/mageia/usb-storage-unusual_devs-add-id.patch</Patch>
|
||||
<Patch level="1">patches/mageia/usb-storage-unusual_devs-add-id-2.6.37-buildfix.patch</Patch>
|
||||
<Patch level="1">patches/mageia/media-usb-pwc-lie-in-proc-usb-devices.patch</Patch>
|
||||
<Patch level="1">patches/mageia/3rd-3rdparty-1.0-tree.patch</Patch>
|
||||
<!--Patch level="1">patches/mageia/3rd-3rdparty-1.0-tree.patch</Patch><disable 3Rd module build support>
|
||||
<Patch level="1">patches/mageia/3rd-3rdparty-merge.patch</Patch>
|
||||
<Patch level="1">patches/mageia/3rd-acerhk-0.5.35.patch</Patch>
|
||||
<Patch level="1">patches/mageia/3rd-acerhk-kbuild.patch</Patch>
|
||||
@@ -181,9 +194,9 @@
|
||||
<Patch level="1">patches/mageia/3rd-acerhk-fix-build-with-function-tracer.patch</Patch>
|
||||
<Patch level="1">patches/mageia/3rd-acerhk-2.6.36-buildfix.patch</Patch>
|
||||
<Patch level="1">patches/mageia/3rd-acerhk-fix-include.patch</Patch>
|
||||
<!--Patch level="1">patches/mageia/3rd-aes2501-r19.patch</Patch>
|
||||
<Patch level="1">patches/mageia/3rd-aes2501-r19.patch</Patch>
|
||||
<Patch level="1">patches/mageia/3rd-aes2501-kbuild.patch</Patch>
|
||||
<Patch level="1">patches/mageia/3rd-aes2501-rmmod-oops-fix.patch</Patch--><!--aes2501 build error-->
|
||||
<Patch level="1">patches/mageia/3rd-aes2501-rmmod-oops-fix.patch</Patch><aes2501 build error>
|
||||
<Patch level="1">patches/mageia/3rd-ndiswrapper-1.61.patch</Patch>
|
||||
<Patch level="1">patches/mageia/3rd-ndiswrapper-Kconfig.patch</Patch>
|
||||
<Patch level="1">patches/mageia/3rd-ndiswrapper-Makefile-build-fix.patch</Patch>
|
||||
@@ -198,8 +211,9 @@
|
||||
<Patch level="1">patches/mageia/3rd-viahss-2.6.35-buildfix.patch</Patch>
|
||||
<Patch level="1">patches/mageia/3rd-viahss-3.0-buildfix.patch</Patch>
|
||||
<Patch level="1">patches/mageia/3rd-rtl8812au.patch</Patch>
|
||||
<Patch level="1">patches/mageia/3rd-rtl8723de.patch</Patch>
|
||||
<Patch level="1">patches/mageia/3rd-rtl8723de.patch</Patch-->
|
||||
<Patch level="1">patches/mageia/tools-testing-selftest-Makefile-remove-powerpc-reference.patch</Patch>
|
||||
<Patch level="1">patches/mageia/arch-ARM-omap2-hide-omap3_save_secure_ram-on-non-OMAP3-bu.patch</Patch>
|
||||
</Patches>
|
||||
</Source>
|
||||
|
||||
@@ -255,8 +269,8 @@
|
||||
|
||||
<History>
|
||||
<Update release="17">
|
||||
<Date>2018-03-03</Date>
|
||||
<Version>4.14.23</Version>
|
||||
<Date>2018-03-09</Date>
|
||||
<Version>4.14.24</Version>
|
||||
<Comment>Version Bump.</Comment>
|
||||
<Type package="kernel">security</Type>
|
||||
<Requires>
|
||||
|
||||
Reference in New Issue
Block a user