From: Ben Hutchings <ben@decadent.org.uk>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: akpm@linux-foundation.org, "Borislav Petkov" <bp@suse.de>,
"Matt Fleming" <matt.fleming@intel.com>,
"Andy Lutomirski" <luto@amacapital.net>
Subject: [PATCH 3.16 157/192] x86/efi: Avoid triple faults during EFI mixed mode calls
Date: Mon, 09 Oct 2017 13:44:25 +0100 [thread overview]
Message-ID: <lsq.1507553065.416023213@decadent.org.uk> (raw)
In-Reply-To: <lsq.1507553063.449494954@decadent.org.uk>
3.16.49-rc1 review patch. If anyone has any objections, please let me know.
------------------
From: Matt Fleming <matt.fleming@intel.com>
commit 96738c69a7fcdbf0d7c9df0c8a27660011e82a7b upstream.
Andy pointed out that if an NMI or MCE is received while we're in the
middle of an EFI mixed mode call a triple fault will occur. This can
happen, for example, when issuing an EFI mixed mode call while running
perf.
The reason for the triple fault is that we execute the mixed mode call
in 32-bit mode with paging disabled but with 64-bit kernel IDT handlers
installed throughout the call.
At Andy's suggestion, stop playing the games we currently do at runtime,
such as disabling paging and installing a 32-bit GDT for __KERNEL_CS. We
can simply switch to the __KERNEL32_CS descriptor before invoking
firmware services, and run in compatibility mode. This way, if an
NMI/MCE does occur the kernel IDT handler will execute correctly, since
it'll jump to __KERNEL_CS automatically.
However, this change is only possible post-ExitBootServices(). Before
then the firmware "owns" the machine and expects for its 32-bit IDT
handlers to be left intact to service interrupts, etc.
So, we now need to distinguish between early boot and runtime
invocations of EFI services. During early boot, we need to restore the
GDT that the firmware expects to be present. We can only jump to the
__KERNEL32_CS code segment for mixed mode calls after ExitBootServices()
has been invoked.
A liberal sprinkling of comments in the thunking code should make the
differences in early and late environments more apparent.
Reported-by: Andy Lutomirski <luto@amacapital.net>
Tested-by: Borislav Petkov <bp@suse.de>
Signed-off-by: Matt Fleming <matt.fleming@intel.com>
[bwh: Backported to 3.16: in arch/x86/boot/compressed/Makefile, add the new
object file to VMLINUX_OBJS]
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
---
--- a/arch/x86/boot/compressed/Makefile
+++ b/arch/x86/boot/compressed/Makefile
@@ -34,6 +34,9 @@ $(obj)/eboot.o: KBUILD_CFLAGS += -fshort
ifeq ($(CONFIG_EFI_STUB), y)
VMLINUX_OBJS += $(obj)/eboot.o $(obj)/efi_stub_$(BITS).o
+ifeq ($(CONFIG_EFI_MIXED), y)
+ VMLINUX_OBJS += $(obj)/efi_thunk_$(BITS).o
+endif
endif
$(obj)/vmlinux: $(VMLINUX_OBJS) FORCE
--- a/arch/x86/boot/compressed/efi_stub_64.S
+++ b/arch/x86/boot/compressed/efi_stub_64.S
@@ -3,28 +3,3 @@
#include <asm/processor-flags.h>
#include "../../platform/efi/efi_stub_64.S"
-
-#ifdef CONFIG_EFI_MIXED
- .code64
- .text
-ENTRY(efi64_thunk)
- push %rbp
- push %rbx
-
- subq $16, %rsp
- leaq efi_exit32(%rip), %rax
- movl %eax, 8(%rsp)
- leaq efi_gdt64(%rip), %rax
- movl %eax, 4(%rsp)
- movl %eax, 2(%rax) /* Fixup the gdt base address */
- leaq efi32_boot_gdt(%rip), %rax
- movl %eax, (%rsp)
-
- call __efi64_thunk
-
- addq $16, %rsp
- pop %rbx
- pop %rbp
- ret
-ENDPROC(efi64_thunk)
-#endif /* CONFIG_EFI_MIXED */
--- /dev/null
+++ b/arch/x86/boot/compressed/efi_thunk_64.S
@@ -0,0 +1,196 @@
+/*
+ * Copyright (C) 2014, 2015 Intel Corporation; author Matt Fleming
+ *
+ * Early support for invoking 32-bit EFI services from a 64-bit kernel.
+ *
+ * Because this thunking occurs before ExitBootServices() we have to
+ * restore the firmware's 32-bit GDT before we make EFI serivce calls,
+ * since the firmware's 32-bit IDT is still currently installed and it
+ * needs to be able to service interrupts.
+ *
+ * On the plus side, we don't have to worry about mangling 64-bit
+ * addresses into 32-bits because we're executing with an identify
+ * mapped pagetable and haven't transitioned to 64-bit virtual addresses
+ * yet.
+ */
+
+#include <linux/linkage.h>
+#include <asm/msr.h>
+#include <asm/page_types.h>
+#include <asm/processor-flags.h>
+#include <asm/segment.h>
+
+ .code64
+ .text
+ENTRY(efi64_thunk)
+ push %rbp
+ push %rbx
+
+ subq $8, %rsp
+ leaq efi_exit32(%rip), %rax
+ movl %eax, 4(%rsp)
+ leaq efi_gdt64(%rip), %rax
+ movl %eax, (%rsp)
+ movl %eax, 2(%rax) /* Fixup the gdt base address */
+
+ movl %ds, %eax
+ push %rax
+ movl %es, %eax
+ push %rax
+ movl %ss, %eax
+ push %rax
+
+ /*
+ * Convert x86-64 ABI params to i386 ABI
+ */
+ subq $32, %rsp
+ movl %esi, 0x0(%rsp)
+ movl %edx, 0x4(%rsp)
+ movl %ecx, 0x8(%rsp)
+ movq %r8, %rsi
+ movl %esi, 0xc(%rsp)
+ movq %r9, %rsi
+ movl %esi, 0x10(%rsp)
+
+ sgdt save_gdt(%rip)
+
+ leaq 1f(%rip), %rbx
+ movq %rbx, func_rt_ptr(%rip)
+
+ /*
+ * Switch to gdt with 32-bit segments. This is the firmware GDT
+ * that was installed when the kernel started executing. This
+ * pointer was saved at the EFI stub entry point in head_64.S.
+ */
+ leaq efi32_boot_gdt(%rip), %rax
+ lgdt (%rax)
+
+ pushq $__KERNEL_CS
+ leaq efi_enter32(%rip), %rax
+ pushq %rax
+ lretq
+
+1: addq $32, %rsp
+
+ lgdt save_gdt(%rip)
+
+ pop %rbx
+ movl %ebx, %ss
+ pop %rbx
+ movl %ebx, %es
+ pop %rbx
+ movl %ebx, %ds
+
+ /*
+ * Convert 32-bit status code into 64-bit.
+ */
+ test %rax, %rax
+ jz 1f
+ movl %eax, %ecx
+ andl $0x0fffffff, %ecx
+ andl $0xf0000000, %eax
+ shl $32, %rax
+ or %rcx, %rax
+1:
+ addq $8, %rsp
+ pop %rbx
+ pop %rbp
+ ret
+ENDPROC(efi64_thunk)
+
+ENTRY(efi_exit32)
+ movq func_rt_ptr(%rip), %rax
+ push %rax
+ mov %rdi, %rax
+ ret
+ENDPROC(efi_exit32)
+
+ .code32
+/*
+ * EFI service pointer must be in %edi.
+ *
+ * The stack should represent the 32-bit calling convention.
+ */
+ENTRY(efi_enter32)
+ movl $__KERNEL_DS, %eax
+ movl %eax, %ds
+ movl %eax, %es
+ movl %eax, %ss
+
+ /* Reload pgtables */
+ movl %cr3, %eax
+ movl %eax, %cr3
+
+ /* Disable paging */
+ movl %cr0, %eax
+ btrl $X86_CR0_PG_BIT, %eax
+ movl %eax, %cr0
+
+ /* Disable long mode via EFER */
+ movl $MSR_EFER, %ecx
+ rdmsr
+ btrl $_EFER_LME, %eax
+ wrmsr
+
+ call *%edi
+
+ /* We must preserve return value */
+ movl %eax, %edi
+
+ /*
+ * Some firmware will return with interrupts enabled. Be sure to
+ * disable them before we switch GDTs.
+ */
+ cli
+
+ movl 56(%esp), %eax
+ movl %eax, 2(%eax)
+ lgdtl (%eax)
+
+ movl %cr4, %eax
+ btsl $(X86_CR4_PAE_BIT), %eax
+ movl %eax, %cr4
+
+ movl %cr3, %eax
+ movl %eax, %cr3
+
+ movl $MSR_EFER, %ecx
+ rdmsr
+ btsl $_EFER_LME, %eax
+ wrmsr
+
+ xorl %eax, %eax
+ lldt %ax
+
+ movl 60(%esp), %eax
+ pushl $__KERNEL_CS
+ pushl %eax
+
+ /* Enable paging */
+ movl %cr0, %eax
+ btsl $X86_CR0_PG_BIT, %eax
+ movl %eax, %cr0
+ lret
+ENDPROC(efi_enter32)
+
+ .data
+ .balign 8
+ .global efi32_boot_gdt
+efi32_boot_gdt: .word 0
+ .quad 0
+
+save_gdt: .word 0
+ .quad 0
+func_rt_ptr: .quad 0
+
+ .global efi_gdt64
+efi_gdt64:
+ .word efi_gdt64_end - efi_gdt64
+ .long 0 /* Filled out by user */
+ .word 0
+ .quad 0x0000000000000000 /* NULL descriptor */
+ .quad 0x00af9a000000ffff /* __KERNEL_CS */
+ .quad 0x00cf92000000ffff /* __KERNEL_DS */
+ .quad 0x0080890000000000 /* TS descriptor */
+ .quad 0x0000000000000000 /* TS continued */
+efi_gdt64_end:
--- a/arch/x86/platform/efi/efi_stub_64.S
+++ b/arch/x86/platform/efi/efi_stub_64.S
@@ -91,167 +91,6 @@ ENTRY(efi_call)
ret
ENDPROC(efi_call)
-#ifdef CONFIG_EFI_MIXED
-
-/*
- * We run this function from the 1:1 mapping.
- *
- * This function must be invoked with a 1:1 mapped stack.
- */
-ENTRY(__efi64_thunk)
- movl %ds, %eax
- push %rax
- movl %es, %eax
- push %rax
- movl %ss, %eax
- push %rax
-
- subq $32, %rsp
- movl %esi, 0x0(%rsp)
- movl %edx, 0x4(%rsp)
- movl %ecx, 0x8(%rsp)
- movq %r8, %rsi
- movl %esi, 0xc(%rsp)
- movq %r9, %rsi
- movl %esi, 0x10(%rsp)
-
- sgdt save_gdt(%rip)
-
- leaq 1f(%rip), %rbx
- movq %rbx, func_rt_ptr(%rip)
-
- /* Switch to gdt with 32-bit segments */
- movl 64(%rsp), %eax
- lgdt (%rax)
-
- leaq efi_enter32(%rip), %rax
- pushq $__KERNEL_CS
- pushq %rax
- lretq
-
-1: addq $32, %rsp
-
- lgdt save_gdt(%rip)
-
- pop %rbx
- movl %ebx, %ss
- pop %rbx
- movl %ebx, %es
- pop %rbx
- movl %ebx, %ds
-
- /*
- * Convert 32-bit status code into 64-bit.
- */
- test %rax, %rax
- jz 1f
- movl %eax, %ecx
- andl $0x0fffffff, %ecx
- andl $0xf0000000, %eax
- shl $32, %rax
- or %rcx, %rax
-1:
- ret
-ENDPROC(__efi64_thunk)
-
-ENTRY(efi_exit32)
- movq func_rt_ptr(%rip), %rax
- push %rax
- mov %rdi, %rax
- ret
-ENDPROC(efi_exit32)
-
- .code32
-/*
- * EFI service pointer must be in %edi.
- *
- * The stack should represent the 32-bit calling convention.
- */
-ENTRY(efi_enter32)
- movl $__KERNEL_DS, %eax
- movl %eax, %ds
- movl %eax, %es
- movl %eax, %ss
-
- /* Reload pgtables */
- movl %cr3, %eax
- movl %eax, %cr3
-
- /* Disable paging */
- movl %cr0, %eax
- btrl $X86_CR0_PG_BIT, %eax
- movl %eax, %cr0
-
- /* Disable long mode via EFER */
- movl $MSR_EFER, %ecx
- rdmsr
- btrl $_EFER_LME, %eax
- wrmsr
-
- call *%edi
-
- /* We must preserve return value */
- movl %eax, %edi
-
- /*
- * Some firmware will return with interrupts enabled. Be sure to
- * disable them before we switch GDTs.
- */
- cli
-
- movl 68(%esp), %eax
- movl %eax, 2(%eax)
- lgdtl (%eax)
-
- movl %cr4, %eax
- btsl $(X86_CR4_PAE_BIT), %eax
- movl %eax, %cr4
-
- movl %cr3, %eax
- movl %eax, %cr3
-
- movl $MSR_EFER, %ecx
- rdmsr
- btsl $_EFER_LME, %eax
- wrmsr
-
- xorl %eax, %eax
- lldt %ax
-
- movl 72(%esp), %eax
- pushl $__KERNEL_CS
- pushl %eax
-
- /* Enable paging */
- movl %cr0, %eax
- btsl $X86_CR0_PG_BIT, %eax
- movl %eax, %cr0
- lret
-ENDPROC(efi_enter32)
-
- .data
- .balign 8
- .global efi32_boot_gdt
-efi32_boot_gdt: .word 0
- .quad 0
-
-save_gdt: .word 0
- .quad 0
-func_rt_ptr: .quad 0
-
- .global efi_gdt64
-efi_gdt64:
- .word efi_gdt64_end - efi_gdt64
- .long 0 /* Filled out by user */
- .word 0
- .quad 0x0000000000000000 /* NULL descriptor */
- .quad 0x00af9a000000ffff /* __KERNEL_CS */
- .quad 0x00cf92000000ffff /* __KERNEL_DS */
- .quad 0x0080890000000000 /* TS descriptor */
- .quad 0x0000000000000000 /* TS continued */
-efi_gdt64_end:
-#endif /* CONFIG_EFI_MIXED */
-
.data
ENTRY(efi_scratch)
.fill 3,8,0
--- a/arch/x86/platform/efi/efi_thunk_64.S
+++ b/arch/x86/platform/efi/efi_thunk_64.S
@@ -1,9 +1,26 @@
/*
* Copyright (C) 2014 Intel Corporation; author Matt Fleming
+ *
+ * Support for invoking 32-bit EFI runtime services from a 64-bit
+ * kernel.
+ *
+ * The below thunking functions are only used after ExitBootServices()
+ * has been called. This simplifies things considerably as compared with
+ * the early EFI thunking because we can leave all the kernel state
+ * intact (GDT, IDT, etc) and simply invoke the the 32-bit EFI runtime
+ * services from __KERNEL32_CS. This means we can continue to service
+ * interrupts across an EFI mixed mode call.
+ *
+ * We do however, need to handle the fact that we're running in a full
+ * 64-bit virtual address space. Things like the stack and instruction
+ * addresses need to be accessible by the 32-bit firmware, so we rely on
+ * using the identity mappings in the EFI page table to access the stack
+ * and kernel text (see efi_setup_page_tables()).
*/
#include <linux/linkage.h>
#include <asm/page_types.h>
+#include <asm/segment.h>
.text
.code64
@@ -33,14 +50,6 @@ ENTRY(efi64_thunk)
leaq efi_exit32(%rip), %rbx
subq %rax, %rbx
movl %ebx, 8(%rsp)
- leaq efi_gdt64(%rip), %rbx
- subq %rax, %rbx
- movl %ebx, 2(%ebx)
- movl %ebx, 4(%rsp)
- leaq efi_gdt32(%rip), %rbx
- subq %rax, %rbx
- movl %ebx, 2(%ebx)
- movl %ebx, (%rsp)
leaq __efi64_thunk(%rip), %rbx
subq %rax, %rbx
@@ -52,14 +61,92 @@ ENTRY(efi64_thunk)
retq
ENDPROC(efi64_thunk)
- .data
-efi_gdt32:
- .word efi_gdt32_end - efi_gdt32
- .long 0 /* Filled out above */
- .word 0
- .quad 0x0000000000000000 /* NULL descriptor */
- .quad 0x00cf9a000000ffff /* __KERNEL_CS */
- .quad 0x00cf93000000ffff /* __KERNEL_DS */
-efi_gdt32_end:
+/*
+ * We run this function from the 1:1 mapping.
+ *
+ * This function must be invoked with a 1:1 mapped stack.
+ */
+ENTRY(__efi64_thunk)
+ movl %ds, %eax
+ push %rax
+ movl %es, %eax
+ push %rax
+ movl %ss, %eax
+ push %rax
+
+ subq $32, %rsp
+ movl %esi, 0x0(%rsp)
+ movl %edx, 0x4(%rsp)
+ movl %ecx, 0x8(%rsp)
+ movq %r8, %rsi
+ movl %esi, 0xc(%rsp)
+ movq %r9, %rsi
+ movl %esi, 0x10(%rsp)
+
+ leaq 1f(%rip), %rbx
+ movq %rbx, func_rt_ptr(%rip)
+
+ /* Switch to 32-bit descriptor */
+ pushq $__KERNEL32_CS
+ leaq efi_enter32(%rip), %rax
+ pushq %rax
+ lretq
+
+1: addq $32, %rsp
+
+ pop %rbx
+ movl %ebx, %ss
+ pop %rbx
+ movl %ebx, %es
+ pop %rbx
+ movl %ebx, %ds
+ /*
+ * Convert 32-bit status code into 64-bit.
+ */
+ test %rax, %rax
+ jz 1f
+ movl %eax, %ecx
+ andl $0x0fffffff, %ecx
+ andl $0xf0000000, %eax
+ shl $32, %rax
+ or %rcx, %rax
+1:
+ ret
+ENDPROC(__efi64_thunk)
+
+ENTRY(efi_exit32)
+ movq func_rt_ptr(%rip), %rax
+ push %rax
+ mov %rdi, %rax
+ ret
+ENDPROC(efi_exit32)
+
+ .code32
+/*
+ * EFI service pointer must be in %edi.
+ *
+ * The stack should represent the 32-bit calling convention.
+ */
+ENTRY(efi_enter32)
+ movl $__KERNEL_DS, %eax
+ movl %eax, %ds
+ movl %eax, %es
+ movl %eax, %ss
+
+ call *%edi
+
+ /* We must preserve return value */
+ movl %eax, %edi
+
+ movl 72(%esp), %eax
+ pushl $__KERNEL_CS
+ pushl %eax
+
+ lret
+ENDPROC(efi_enter32)
+
+ .data
+ .balign 8
+func_rt_ptr: .quad 0
efi_saved_sp: .quad 0
next prev parent reply other threads:[~2017-10-09 13:16 UTC|newest]
Thread overview: 195+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-10-09 12:44 [PATCH 3.16 000/192] 3.16.49-rc1 review Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 017/192] [media] mceusb: fix memory leaks in error path Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 056/192] MIPS: module: Ensure we always clean up r_mips_hi16_list Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 119/192] ext3: Don't clear SGID when inheriting ACLs Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 014/192] tools/lib/lockdep: Reduce MAX_LOCK_DEPTH to avoid overflowing lock_chain/: Depth Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 111/192] Input: i8042 - fix crash at boot time Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 083/192] ipv6: dad: don't remove dynamic addresses if link is down Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 039/192] NFC: fix broken device allocation Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 109/192] powerpc/64: Fix atomic64_inc_not_zero() to return an int Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 026/192] Bluetooth: use constant time memory comparison for secret values Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 040/192] crypto: talitos - Extend max key length for SHA384/512-HMAC and AEAD Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 018/192] kvm: vmx: Do not disable intercepts for BNDCFGS Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 126/192] ext4: preserve i_mode if __ext4_set_acl() fails Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 099/192] cfg80211: Validate frequencies nested in NL80211_ATTR_SCAN_FREQUENCIES Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 048/192] staging: comedi: fix clean-up of comedi_class in comedi_init() Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 070/192] MIPS: Actually decode JALX in `__compute_return_epc_for_insn' Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 122/192] reiserfs: Don't clear SGID when inheriting ACLs Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 008/192] pinctrl: imx: fix debug message for SHARE_MUX_CONF_REG case Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 107/192] crypto: caam - fix signals handling Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 081/192] parisc: Report SIGSEGV instead of SIGBUS when running out of stack Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 090/192] net: reflect mark on tcp syn ack packets Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 032/192] PCI: Correct PCI_STD_RESOURCE_END usage Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 061/192] ath9k: fix tx99 bus error Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 120/192] ext3: preserve i_mode if ext2_set_acl() fails Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 098/192] cfg80211: Define nla_policy for NL80211_ATTR_LOCAL_MESH_POWER_MODE Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 058/192] MIPS: Save static registers before sysmips Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 095/192] tpm: fix a kernel memory leak in tpm-sysfs.c Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 063/192] libertas: Fix lbs_prb_rsp_limit_set() Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 117/192] ext2: Don't clear SGID when inheriting ACLs Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 030/192] usb: usbip: set buffer pointers to NULL after free Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 110/192] PM / QoS: return -EINVAL for bogus strings Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 103/192] powerpc/asm: Mark cr0 as clobbered in mftb() Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 034/192] USB: serial: option: add two Longcheer device ids Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 055/192] MIPS: Bail on unsupported module relocs Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 065/192] vfio: New external user group/file match Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 118/192] ext2: preserve i_mode if ext2_set_acl() fails Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 001/192] sched: Rename a misleading variable in build_overlap_sched_groups() Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 057/192] MIPS: Fix mips_atomic_set() retry condition Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 093/192] CIFS: fix circular locking dependency Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 115/192] ubifs: Don't leak kernel memory to the MTD Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 089/192] RDMA/uverbs: Check port number supplied by user verbs cmds Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 085/192] drm/i915: Disable MSI for all pre-gen5 Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 059/192] MIPS: Fix mips_atomic_set() with EVA Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 084/192] x86/xen: allow userspace access during hypercalls Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 100/192] drm/radeon: Fix eDP for single-display iMac10,1 (v2) Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 066/192] PCI: Mark Haswell Power Control Unit as having non-compliant BARs Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 124/192] jfs: Don't clear SGID when inheriting ACLs Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 114/192] ubifs: Correctly evict xattr inodes Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 091/192] s390/syscalls: Fix out of bounds arguments access Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 116/192] mm: fix overflow check in expand_upwards() Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 101/192] mm/mmap.c: do not blow on PROT_NONE MAP_FIXED holes in the stack Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 050/192] af_iucv: Move sockaddr length checks to before accessing sa_family in bind and connect handlers Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 015/192] Documentation: DMA API: fix a typo in a function name Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 094/192] rtc: rtc-nuc900: fix loop timeout test Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 082/192] ipv6: always add flag an address that failed DAD with DADFAILED Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 011/192] wlcore: fix 64K page support Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 007/192] mwifiex: fixup error cases in mwifiex_add_virtual_intf() Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 127/192] ext4: Don't clear SGID when inheriting ACLs Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 013/192] Fix serial console on SNI RM400 machines Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 086/192] parisc: DMA API: return error instead of BUG_ON for dma ops on non dma devs Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 028/192] iio: magnetometer: st_magn_spi: fix spi_device_id table Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 104/192] MIPS: Negate error syscall return in trace Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 044/192] x86/nmi: Fix timeout test in test_nmi_ipi() Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 102/192] fs/dcache.c: fix spin lockup issue on nlru->lock Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 047/192] spi: atmel: fix corrupted data issue on SAM9 family SoCs Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 041/192] ASoC: compress: Derive substream from stream based on direction Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 010/192] f2fs: try to freeze in gc and discard threads Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 021/192] e1000e: Fix Runtime PM blocks EEE link negotiation in S5 Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 076/192] mwifiex: do not update MCS set from hostapd Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 064/192] vfio: Fix group release deadlock Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 025/192] vt: fix unchecked __put_user() in tioclinux ioctls Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 121/192] hfsplus: Don't clear SGID when inheriting ACLs Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 096/192] target: Fix COMPARE_AND_WRITE caw_sem leak during se_cmd quiesce Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 005/192] sched/topology: Fix overlapping sched_group_mask Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 054/192] scsi: sun_esp: fix device reference leaks Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 092/192] crypto: sha1-ssse3 - Disable avx2 Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 046/192] iwlwifi: mvm: fix the recovery flow while connecting Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 108/192] crypto: atmel - only treat EBUSY as transient if backlog Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 036/192] udf: Fix races with i_size changes during readpage Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 062/192] USB: serial: cp210x: add ID for CEL EM3588 USB ZigBee stick Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 123/192] reiserfs: preserve i_mode if __reiserfs_set_acl() fails Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 022/192] e1000e: Undo e1000e_pm_freeze if __e1000_shutdown fails Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 051/192] scsi: virtio_scsi: let host do exception handling Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 052/192] scsi: bnx2i: missing error code in bnx2i_ep_connect() Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 060/192] ath9k: fix tx99 use after free Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 075/192] btrfs: Don't clear SGID when inheriting ACLs Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 068/192] PM / Domains: Fix unsafe iteration over modified list of device links Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 077/192] PCI/PM: Restore the status of PCI devices across hibernation Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 024/192] xen: avoid type warning in xchg_xen_ulong Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 097/192] cfg80211: Check if PMKID attribute is of expected size Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 130/192] btrfs: preserve i_mode if __btrfs_set_acl() fails Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 004/192] sched/topology: Fix building of overlapping sched-groups Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 023/192] perf/core: Correct event creation with PERF_FORMAT_GROUP Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 106/192] powerpc: Fix emulation of mfocrf in emulate_step() Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 043/192] xhci: Limit USB2 port wake support for AMD Promontory hosts Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 031/192] usb: Fix typo in the definition of Endpoint[out]Request Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 069/192] MIPS: math-emu: Prevent wrong ISA mode instruction emulation Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 006/192] sched/topology: Fix overlapping sched_group_capacity Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 049/192] i2c: cadance: fix ctrl/addr reg write order Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 045/192] Btrfs: fix invalid extent maps due to hole punching Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 079/192] scsi: Add STARGET_CREATED_REMOVE state to scsi_target_state Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 129/192] f2fs: preserve i_mode if __f2fs_set_acl() fails Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 125/192] jfs: preserve i_mode if __jfs_set_acl() fails Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 073/192] Add USB quirk for HVR-950q to avoid intermittent device resets Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 087/192] IB/core: Create common start/end port functions Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 088/192] IB/core: Add inline function to validate port Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 033/192] md: don't use flush_signals in userspace processes Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 128/192] f2fs: Don't clear SGID when inheriting ACLs Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 035/192] USB: serial: qcserial: new Sierra Wireless EM7305 device ID Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 067/192] PCI: Work around poweroff & suspend-to-RAM issue on Macbook Pro 11 Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 053/192] xfs: Don't clear SGID when inheriting ACLs Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 019/192] kvm: x86: Guest BNDCFGS requires guest MPX support Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 078/192] scsi: ses: do not add a device to an enclosure if enclosure_add_links() fails Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 037/192] udf: Fix deadlock between writeback and udf_setsize() Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 016/192] drm/i915: Workaround VLV/CHV DSI scanline counter hardware fail Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 042/192] Btrfs: skip commit transaction if we don't have enough pinned bytes Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 105/192] iscsi-target: Add login_keys_workaround attribute for non RFC initiators Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 002/192] sched/topology: Refactor function build_overlap_sched_groups() Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 029/192] vxlan: dont migrate permanent fdb entries during learn Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 072/192] MIPS: Send SIGILL for BPOSGE32 in `__compute_return_epc_for_insn' Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 112/192] sysctl: fix lax sysctl_check_table() sanity check Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 027/192] iio: accel: st_accel_spi: fix spi_device_id table Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 113/192] sunrpc: use constant time memory comparison for mac Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 132/192] [media] saa7164: fix double fetch PCIe access condition Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 071/192] MIPS: Fix unaligned PC interpretation in `compute_return_epc' Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 003/192] sched/fair, cpumask: Export for_each_cpu_wrap() Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 012/192] arm64: Preventing READ_IMPLIES_EXEC propagation Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 131/192] [media] saa7164: fix sparse warnings Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 020/192] kvm: vmx: Check value written to IA32_BNDCFGS Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 009/192] f2fs: load inode's flag from disk Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 038/192] drm/msm/hdmi: Use bitwise operators when building register values Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 080/192] parisc: use compat_sys_keyctl() Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 074/192] arm64: ptrace: Avoid setting compat FP[SC]R to garbage if get_user fails Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 171/192] arm64: Rework valid_user_regs Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 169/192] macintosh/therm_windtunnel: Export I2C module alias information Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 134/192] kvm: nVMX: Don't allow L2 to access the hardware CR8 Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 186/192] Fix regression which breaks DFS mounting Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 144/192] sparc: Fix system call tracing register handling Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 167/192] perf/x86: Honor the architectural performance monitoring version Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 180/192] ALSA: oxygen: Fix logical-not-parentheses warning Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 141/192] ipv4/fib: don't warn when primary address is missing if in_dev is dead Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 176/192] PCI: Add Netronome vendor and device IDs Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 175/192] PCI: Support PCIe devices with short cfg_size Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 139/192] l2tp: avoid use-after-free caused by l2tp_ip_backlog_recv Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 146/192] sparc64: Fix sparc64_set_context stack handling Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 182/192] fs/cifs: make share unaccessible at root level mountable Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 136/192] xfs: XFS_IS_REALTIME_INODE() should be false if no rt device present Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 148/192] sparc64: Take ctx_alloc_lock properly in hugetlb_setup() Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 164/192] serial: samsung: Reorder the sequence of clock control when call s3c24xx_serial_set_termios() Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 143/192] m32r: add io*_rep helpers Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 156/192] drm/irq: BUG_ON() -> WARN_ON() Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 160/192] v4l2-dv-timings.h: fix polarity for 4k formats Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 161/192] Input: ads7846 - correct the value got from SPI Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 183/192] Fix memory leaks in cifs_do_mount() Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 185/192] Move check for prefix path to within cifs_get_root() Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 190/192] sched: add macros to define bitops for task atomic flags Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 170/192] MIPS: KVM: Fix modular KVM under QEMU Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 154/192] net sched filters: fix notification of filter delete with proper handle Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 174/192] mm: thp: fix SMP race condition between THP page fault and MADV_DONTNEED Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 179/192] PCI: Limit config space size for Netronome NFP4000 Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 162/192] ARM: OMAP3: Fix booting with thumb2 kernel Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 152/192] net: Implement net_dbg_ratelimited() for CONFIG_DYNAMIC_DEBUG case Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 188/192] sched: move no_new_privs into new atomic flags Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 149/192] sparc: Harden signal return frame checks Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 153/192] net: Don't forget pr_fmt on net_dbg_ratelimited for CONFIG_DYNAMIC_DEBUG Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 189/192] sched: fix confusing PFA_NO_NEW_PRIVS constant Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 135/192] video: fbdev: aty: do not leak uninitialized padding in clk to userspace Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 191/192] cpuset: PF_SPREAD_PAGE and PF_SPREAD_SLAB should be atomic flags Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 168/192] perf/x86: Fix undefined shift on 32-bit kernels Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 187/192] Fix match_prepath() Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 177/192] PCI: Limit config space size for Netronome NFP6000 family Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 159/192] usb: musb: cppi41: improve rx channel abort routine Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 178/192] PCI: Add Netronome NFP4000 PF device ID Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 145/192] sparc64: Fix bootup regressions on some Kconfig combinations Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 137/192] scsi: scsi_transport_iscsi: fix the issue that iscsi_if_rx doesn't parse nlmsg properly Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 151/192] net_dbg_ratelimited: turn into no-op when !DEBUG Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 165/192] misc: ad525x_dpot: Fix the enabling of the "otpXen" attributes Ben Hutchings
2017-10-09 12:44 ` Ben Hutchings [this message]
2017-10-09 12:44 ` [PATCH 3.16 192/192] dm: flush queued bios when process blocks to avoid deadlock Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 155/192] Revert "ACPI / EC: Add support to disallow QR_EC to be issued before completing previous QR_EC" Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 142/192] m32r: add definition of ioremap_wc to io.h Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 172/192] mm/swap.c: flush lru pvecs on compound page arrival Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 166/192] MIPS: Fix 64k page support for 32 bit kernels Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 163/192] Btrfs: don't use src fd for printk Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 173/192] s390/seccomp: fix error return for filtered system calls Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 181/192] netvsc: fix incorrect receive checksum offloading Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 150/192] sparc64: Fix return from trap window fill crashes Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 147/192] sparc/PCI: Fix for panic while enabling SR-IOV Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 184/192] Compare prepaths when comparing superblocks Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 138/192] Bluetooth: Properly check L2CAP config option output buffer length Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 140/192] net/route: enforce hoplimit max value Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 158/192] usb: musb: cppi41: correct the macro name EP_MODE_AUTOREG_* Ben Hutchings
2017-10-09 12:44 ` [PATCH 3.16 133/192] nl80211: check for the required netlink attributes presence Ben Hutchings
2017-10-09 20:13 ` [PATCH 3.16 000/192] 3.16.49-rc1 review Guenter Roeck
2017-10-09 21:17 ` Ben Hutchings
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=lsq.1507553065.416023213@decadent.org.uk \
--to=ben@decadent.org.uk \
--cc=akpm@linux-foundation.org \
--cc=bp@suse.de \
--cc=linux-kernel@vger.kernel.org \
--cc=luto@amacapital.net \
--cc=matt.fleming@intel.com \
--cc=stable@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox