From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: linux-kernel@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
stable@vger.kernel.org, Al Viro <viro@ZenIV.linux.org.uk>,
Helge Deller <deller@gmx.de>
Subject: [PATCH 4.10 49/81] parisc: Clean up fixup routines for get_user()/put_user()
Date: Thu, 6 Apr 2017 10:38:41 +0200 [thread overview]
Message-ID: <20170406083626.304352016@linuxfoundation.org> (raw)
In-Reply-To: <20170406083624.322941631@linuxfoundation.org>
4.10-stable review patch. If anyone has any objections, please let me know.
------------------
From: Helge Deller <deller@gmx.de>
commit d19f5e41b344a057bb2450024a807476f30978d2 upstream.
Al Viro noticed that userspace accesses via get_user()/put_user() can be
simplified a lot with regard to usage of the exception handling.
This patch implements a fixup routine for get_user() and put_user() in such
that the exception handler will automatically load -EFAULT into the register
%r8 (the error value) in case on a fault on userspace. Additionally the fixup
routine will zero the target register on fault in case of a get_user() call.
The target register is extracted out of the faulting assembly instruction.
This patch brings a few benefits over the old implementation:
1. Exception handling gets much cleaner, easier and smaller in size.
2. Helper functions like fixup_get_user_skip_1 (all of fixup.S) can be dropped.
3. No need to hardcode %r9 as target register for get_user() any longer. This
helps the compiler register allocator and thus creates less assembler
statements.
4. No dependency on the exception_data contents any longer.
5. Nested faults will be handled cleanly.
Reported-by: Al Viro <viro@ZenIV.linux.org.uk>
Signed-off-by: Helge Deller <deller@gmx.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
arch/parisc/include/asm/uaccess.h | 59 +++++++++++++---------
arch/parisc/kernel/parisc_ksyms.c | 10 ---
arch/parisc/lib/Makefile | 2
arch/parisc/lib/fixup.S | 98 --------------------------------------
arch/parisc/mm/fault.c | 17 ++++++
5 files changed, 52 insertions(+), 134 deletions(-)
--- a/arch/parisc/include/asm/uaccess.h
+++ b/arch/parisc/include/asm/uaccess.h
@@ -68,6 +68,15 @@ struct exception_table_entry {
".previous\n"
/*
+ * ASM_EXCEPTIONTABLE_ENTRY_EFAULT() creates a special exception table entry
+ * (with lowest bit set) for which the fault handler in fixup_exception() will
+ * load -EFAULT into %r8 for a read or write fault, and zeroes the target
+ * register in case of a read fault in get_user().
+ */
+#define ASM_EXCEPTIONTABLE_ENTRY_EFAULT( fault_addr, except_addr )\
+ ASM_EXCEPTIONTABLE_ENTRY( fault_addr, except_addr + 1)
+
+/*
* The page fault handler stores, in a per-cpu area, the following information
* if a fixup routine is available.
*/
@@ -94,7 +103,7 @@ struct exception_data {
#define __get_user(x, ptr) \
({ \
register long __gu_err __asm__ ("r8") = 0; \
- register long __gu_val __asm__ ("r9") = 0; \
+ register long __gu_val; \
\
load_sr2(); \
switch (sizeof(*(ptr))) { \
@@ -110,22 +119,23 @@ struct exception_data {
})
#define __get_user_asm(ldx, ptr) \
- __asm__("\n1:\t" ldx "\t0(%%sr2,%2),%0\n\t" \
- ASM_EXCEPTIONTABLE_ENTRY(1b, fixup_get_user_skip_1)\
+ __asm__("1: " ldx " 0(%%sr2,%2),%0\n" \
+ "9:\n" \
+ ASM_EXCEPTIONTABLE_ENTRY_EFAULT(1b, 9b) \
: "=r"(__gu_val), "=r"(__gu_err) \
- : "r"(ptr), "1"(__gu_err) \
- : "r1");
+ : "r"(ptr), "1"(__gu_err));
#if !defined(CONFIG_64BIT)
#define __get_user_asm64(ptr) \
- __asm__("\n1:\tldw 0(%%sr2,%2),%0" \
- "\n2:\tldw 4(%%sr2,%2),%R0\n\t" \
- ASM_EXCEPTIONTABLE_ENTRY(1b, fixup_get_user_skip_2)\
- ASM_EXCEPTIONTABLE_ENTRY(2b, fixup_get_user_skip_1)\
+ __asm__(" copy %%r0,%R0\n" \
+ "1: ldw 0(%%sr2,%2),%0\n" \
+ "2: ldw 4(%%sr2,%2),%R0\n" \
+ "9:\n" \
+ ASM_EXCEPTIONTABLE_ENTRY_EFAULT(1b, 9b) \
+ ASM_EXCEPTIONTABLE_ENTRY_EFAULT(2b, 9b) \
: "=r"(__gu_val), "=r"(__gu_err) \
- : "r"(ptr), "1"(__gu_err) \
- : "r1");
+ : "r"(ptr), "1"(__gu_err));
#endif /* !defined(CONFIG_64BIT) */
@@ -151,32 +161,31 @@ struct exception_data {
* The "__put_user/kernel_asm()" macros tell gcc they read from memory
* instead of writing. This is because they do not write to any memory
* gcc knows about, so there are no aliasing issues. These macros must
- * also be aware that "fixup_put_user_skip_[12]" are executed in the
- * context of the fault, and any registers used there must be listed
- * as clobbers. In this case only "r1" is used by the current routines.
- * r8/r9 are already listed as err/val.
+ * also be aware that fixups are executed in the context of the fault,
+ * and any registers used there must be listed as clobbers.
+ * r8 is already listed as err.
*/
#define __put_user_asm(stx, x, ptr) \
__asm__ __volatile__ ( \
- "\n1:\t" stx "\t%2,0(%%sr2,%1)\n\t" \
- ASM_EXCEPTIONTABLE_ENTRY(1b, fixup_put_user_skip_1)\
+ "1: " stx " %2,0(%%sr2,%1)\n" \
+ "9:\n" \
+ ASM_EXCEPTIONTABLE_ENTRY_EFAULT(1b, 9b) \
: "=r"(__pu_err) \
- : "r"(ptr), "r"(x), "0"(__pu_err) \
- : "r1")
+ : "r"(ptr), "r"(x), "0"(__pu_err))
#if !defined(CONFIG_64BIT)
#define __put_user_asm64(__val, ptr) do { \
__asm__ __volatile__ ( \
- "\n1:\tstw %2,0(%%sr2,%1)" \
- "\n2:\tstw %R2,4(%%sr2,%1)\n\t" \
- ASM_EXCEPTIONTABLE_ENTRY(1b, fixup_put_user_skip_2)\
- ASM_EXCEPTIONTABLE_ENTRY(2b, fixup_put_user_skip_1)\
+ "1: stw %2,0(%%sr2,%1)\n" \
+ "2: stw %R2,4(%%sr2,%1)\n" \
+ "9:\n" \
+ ASM_EXCEPTIONTABLE_ENTRY_EFAULT(1b, 9b) \
+ ASM_EXCEPTIONTABLE_ENTRY_EFAULT(2b, 9b) \
: "=r"(__pu_err) \
- : "r"(ptr), "r"(__val), "0"(__pu_err) \
- : "r1"); \
+ : "r"(ptr), "r"(__val), "0"(__pu_err)); \
} while (0)
#endif /* !defined(CONFIG_64BIT) */
--- a/arch/parisc/kernel/parisc_ksyms.c
+++ b/arch/parisc/kernel/parisc_ksyms.c
@@ -47,16 +47,6 @@ EXPORT_SYMBOL(__cmpxchg_u64);
EXPORT_SYMBOL(lclear_user);
EXPORT_SYMBOL(lstrnlen_user);
-/* Global fixups - defined as int to avoid creation of function pointers */
-extern int fixup_get_user_skip_1;
-extern int fixup_get_user_skip_2;
-extern int fixup_put_user_skip_1;
-extern int fixup_put_user_skip_2;
-EXPORT_SYMBOL(fixup_get_user_skip_1);
-EXPORT_SYMBOL(fixup_get_user_skip_2);
-EXPORT_SYMBOL(fixup_put_user_skip_1);
-EXPORT_SYMBOL(fixup_put_user_skip_2);
-
#ifndef CONFIG_64BIT
/* Needed so insmod can set dp value */
extern int $global$;
--- a/arch/parisc/lib/Makefile
+++ b/arch/parisc/lib/Makefile
@@ -2,7 +2,7 @@
# Makefile for parisc-specific library files
#
-lib-y := lusercopy.o bitops.o checksum.o io.o memset.o fixup.o memcpy.o \
+lib-y := lusercopy.o bitops.o checksum.o io.o memset.o memcpy.o \
ucmpdi2.o delay.o
obj-y := iomap.o
--- a/arch/parisc/lib/fixup.S
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
- * Linux/PA-RISC Project (http://www.parisc-linux.org/)
- *
- * Copyright (C) 2004 Randolph Chung <tausq@debian.org>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2, or (at your option)
- * any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- * Fixup routines for kernel exception handling.
- */
-#include <asm/asm-offsets.h>
-#include <asm/assembly.h>
-#include <asm/errno.h>
-#include <linux/linkage.h>
-
-#ifdef CONFIG_SMP
- .macro get_fault_ip t1 t2
- loadgp
- addil LT%__per_cpu_offset,%r27
- LDREG RT%__per_cpu_offset(%r1),\t1
- /* t2 = smp_processor_id() */
- mfctl 30,\t2
- ldw TI_CPU(\t2),\t2
-#ifdef CONFIG_64BIT
- extrd,u \t2,63,32,\t2
-#endif
- /* t2 = &__per_cpu_offset[smp_processor_id()]; */
- LDREGX \t2(\t1),\t2
- addil LT%exception_data,%r27
- LDREG RT%exception_data(%r1),\t1
- /* t1 = this_cpu_ptr(&exception_data) */
- add,l \t1,\t2,\t1
- /* %r27 = t1->fault_gp - restore gp */
- LDREG EXCDATA_GP(\t1), %r27
- /* t1 = t1->fault_ip */
- LDREG EXCDATA_IP(\t1), \t1
- .endm
-#else
- .macro get_fault_ip t1 t2
- loadgp
- /* t1 = this_cpu_ptr(&exception_data) */
- addil LT%exception_data,%r27
- LDREG RT%exception_data(%r1),\t2
- /* %r27 = t2->fault_gp - restore gp */
- LDREG EXCDATA_GP(\t2), %r27
- /* t1 = t2->fault_ip */
- LDREG EXCDATA_IP(\t2), \t1
- .endm
-#endif
-
- .level LEVEL
-
- .text
- .section .fixup, "ax"
-
- /* get_user() fixups, store -EFAULT in r8, and 0 in r9 */
-ENTRY_CFI(fixup_get_user_skip_1)
- get_fault_ip %r1,%r8
- ldo 4(%r1), %r1
- ldi -EFAULT, %r8
- bv %r0(%r1)
- copy %r0, %r9
-ENDPROC_CFI(fixup_get_user_skip_1)
-
-ENTRY_CFI(fixup_get_user_skip_2)
- get_fault_ip %r1,%r8
- ldo 8(%r1), %r1
- ldi -EFAULT, %r8
- bv %r0(%r1)
- copy %r0, %r9
-ENDPROC_CFI(fixup_get_user_skip_2)
-
- /* put_user() fixups, store -EFAULT in r8 */
-ENTRY_CFI(fixup_put_user_skip_1)
- get_fault_ip %r1,%r8
- ldo 4(%r1), %r1
- bv %r0(%r1)
- ldi -EFAULT, %r8
-ENDPROC_CFI(fixup_put_user_skip_1)
-
-ENTRY_CFI(fixup_put_user_skip_2)
- get_fault_ip %r1,%r8
- ldo 8(%r1), %r1
- bv %r0(%r1)
- ldi -EFAULT, %r8
-ENDPROC_CFI(fixup_put_user_skip_2)
-
--- a/arch/parisc/mm/fault.c
+++ b/arch/parisc/mm/fault.c
@@ -149,6 +149,23 @@ int fixup_exception(struct pt_regs *regs
d->fault_space = regs->isr;
d->fault_addr = regs->ior;
+ /*
+ * Fix up get_user() and put_user().
+ * ASM_EXCEPTIONTABLE_ENTRY_EFAULT() sets the least-significant
+ * bit in the relative address of the fixup routine to indicate
+ * that %r8 should be loaded with -EFAULT to report a userspace
+ * access error.
+ */
+ if (fix->fixup & 1) {
+ regs->gr[8] = -EFAULT;
+
+ /* zero target register for get_user() */
+ if (parisc_acctyp(0, regs->iir) == VM_READ) {
+ int treg = regs->iir & 0x1f;
+ regs->gr[treg] = 0;
+ }
+ }
+
regs->iaoq[0] = (unsigned long)&fix->fixup + fix->fixup;
regs->iaoq[0] &= ~3;
/*
next prev parent reply other threads:[~2017-04-06 8:58 UTC|newest]
Thread overview: 79+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-04-06 8:37 [PATCH 4.10 00/81] 4.10.9-stable review Greg Kroah-Hartman
2017-04-06 8:37 ` [PATCH 4.10 01/81] libceph: force GFP_NOIO for socket allocations Greg Kroah-Hartman
2017-04-06 8:37 ` [PATCH 4.10 02/81] KVM: nVMX: fix nested EPT detection Greg Kroah-Hartman
2017-04-06 8:37 ` [PATCH 4.10 03/81] xfs: pull up iolock from xfs_free_eofblocks() Greg Kroah-Hartman
2017-04-06 8:37 ` [PATCH 4.10 04/81] xfs: sync eofblocks scans under iolock are livelock prone Greg Kroah-Hartman
2017-04-06 8:37 ` [PATCH 4.10 05/81] xfs: fix eofblocks race with file extending async dio writes Greg Kroah-Hartman
2017-04-06 8:37 ` [PATCH 4.10 06/81] xfs: fix toctou race when locking an inode to access the data map Greg Kroah-Hartman
2017-04-06 8:37 ` [PATCH 4.10 07/81] xfs: fail _dir_open when readahead fails Greg Kroah-Hartman
2017-04-06 8:38 ` [PATCH 4.10 08/81] xfs: filter out obviously bad btree pointers Greg Kroah-Hartman
2017-04-06 8:38 ` [PATCH 4.10 09/81] xfs: check for obviously bad level values in the bmbt root Greg Kroah-Hartman
2017-04-06 8:38 ` [PATCH 4.10 10/81] xfs: verify free block header fields Greg Kroah-Hartman
2017-04-06 8:38 ` [PATCH 4.10 11/81] xfs: allow unwritten extents in the CoW fork Greg Kroah-Hartman
2017-04-06 8:38 ` [PATCH 4.10 12/81] xfs: mark speculative prealloc CoW fork extents unwritten Greg Kroah-Hartman
2017-04-06 8:38 ` [PATCH 4.10 13/81] xfs: reset b_first_retry_time when clear the retry status of xfs_buf_t Greg Kroah-Hartman
2017-04-06 8:38 ` [PATCH 4.10 14/81] xfs: reject all unaligned direct writes to reflinked files Greg Kroah-Hartman
2017-04-06 8:38 ` [PATCH 4.10 15/81] xfs: update ctime and mtime on clone destinatation inodes Greg Kroah-Hartman
2017-04-06 8:38 ` [PATCH 4.10 16/81] xfs: correct null checks and error processing in xfs_initialize_perag Greg Kroah-Hartman
2017-04-06 8:38 ` [PATCH 4.10 17/81] xfs: dont fail xfs_extent_busy allocation Greg Kroah-Hartman
2017-04-06 8:38 ` [PATCH 4.10 18/81] xfs: handle indlen shortage on delalloc extent merge Greg Kroah-Hartman
2017-04-06 8:38 ` [PATCH 4.10 19/81] xfs: split indlen reservations fairly when under reserved Greg Kroah-Hartman
2017-04-06 8:38 ` [PATCH 4.10 20/81] xfs: fix uninitialized variable in _reflink_convert_cow Greg Kroah-Hartman
2017-04-06 8:38 ` [PATCH 4.10 21/81] xfs: dont reserve blocks for right shift transactions Greg Kroah-Hartman
2017-04-06 8:38 ` [PATCH 4.10 22/81] xfs: Use xfs_icluster_size_fsb() to calculate inode chunk alignment Greg Kroah-Hartman
2017-04-06 8:38 ` [PATCH 4.10 23/81] xfs: tune down agno asserts in the bmap code Greg Kroah-Hartman
2017-04-06 8:38 ` [PATCH 4.10 24/81] xfs: only reclaim unwritten COW extents periodically Greg Kroah-Hartman
2017-04-06 8:38 ` [PATCH 4.10 25/81] xfs: fix and streamline error handling in xfs_end_io Greg Kroah-Hartman
2017-04-06 8:38 ` [PATCH 4.10 26/81] xfs: Use xfs_icluster_size_fsb() to calculate inode alignment mask Greg Kroah-Hartman
2017-04-06 8:38 ` [PATCH 4.10 27/81] xfs: use iomap new flag for newly allocated delalloc blocks Greg Kroah-Hartman
2017-04-06 8:38 ` [PATCH 4.10 28/81] xfs: try any AG when allocating the first btree block when reflinking Greg Kroah-Hartman
2017-04-06 8:38 ` [PATCH 4.10 29/81] scsi: sg: check length passed to SG_NEXT_CMD_LEN Greg Kroah-Hartman
2017-04-06 8:38 ` [PATCH 4.10 30/81] scsi: libsas: fix ata xfer length Greg Kroah-Hartman
2017-04-06 8:38 ` [PATCH 4.10 31/81] scsi: scsi_dh_alua: Check scsi_device_get() return value Greg Kroah-Hartman
2017-04-06 8:38 ` [PATCH 4.10 32/81] scsi: scsi_dh_alua: Ensure that alua_activate() calls the completion function Greg Kroah-Hartman
2017-04-06 8:38 ` [PATCH 4.10 34/81] PCI: thunder-pem: Use Cavium assigned hardware ID for ThunderX host controller Greg Kroah-Hartman
2017-04-06 8:38 ` [PATCH 4.10 35/81] ALSA: seq: Fix race during FIFO resize Greg Kroah-Hartman
2017-04-06 8:38 ` [PATCH 4.10 36/81] ALSA: hda - fix a problem for lineout on a Dell AIO machine Greg Kroah-Hartman
2017-04-06 8:38 ` [PATCH 4.10 37/81] ASoC: atmel-classd: fix audio clock rate Greg Kroah-Hartman
2017-04-06 8:38 ` [PATCH 4.10 38/81] ASoC: Intel: Skylake: fix invalid memory access due to wrong reference of pointer Greg Kroah-Hartman
2017-04-06 8:38 ` [PATCH 4.10 39/81] ASoC: rt5665: fix getting wrong work handler container Greg Kroah-Hartman
2017-04-06 8:38 ` [PATCH 4.10 40/81] HID: wacom: Dont add ghost interface as shared data Greg Kroah-Hartman
2017-04-06 8:38 ` [PATCH 4.10 41/81] mmc: sdhci: Disable runtime pm when the sdio_irq is enabled Greg Kroah-Hartman
2017-04-06 8:38 ` [PATCH 4.10 42/81] mmc: sdhci-of-at91: fix MMC_DDR_52 timing selection Greg Kroah-Hartman
2017-04-06 8:38 ` [PATCH 4.10 43/81] crypto: ccp - Make some CCP DMA channels private Greg Kroah-Hartman
2017-04-06 8:38 ` [PATCH 4.10 44/81] crypto: xts,lrw - fix out-of-bounds write after kmalloc failure Greg Kroah-Hartman
2017-04-06 8:38 ` [PATCH 4.10 45/81] ARCv2: SLC: Make sure busy bit is set properly on SLC flushing Greg Kroah-Hartman
2017-04-06 8:38 ` [PATCH 4.10 46/81] NFSv4.1 fix infinite loop on IO BAD_STATEID error Greg Kroah-Hartman
2017-04-06 8:38 ` [PATCH 4.10 47/81] nfsd: map the ENOKEY to nfserr_perm for avoiding warning Greg Kroah-Hartman
2017-04-06 8:38 ` [PATCH 4.10 48/81] dt-bindings: rng: clocks property on omap_rng not always mandatory Greg Kroah-Hartman
2017-04-06 8:38 ` Greg Kroah-Hartman [this message]
2017-04-06 8:38 ` [PATCH 4.10 50/81] parisc: Avoid stalled CPU warnings after system shutdown Greg Kroah-Hartman
2017-04-06 8:38 ` [PATCH 4.10 51/81] parisc: Fix access fault handling in pa_memcpy() Greg Kroah-Hartman
2017-04-06 8:38 ` [PATCH 4.10 52/81] ACPI: Fix incompatibility with mcount-based function graph tracing Greg Kroah-Hartman
2017-04-06 8:38 ` [PATCH 4.10 53/81] ACPI: Do not create a platform_device for IOAPIC/IOxAPIC Greg Kroah-Hartman
2017-04-06 8:38 ` [PATCH 4.10 54/81] tty/serial: atmel: fix race condition (TX+DMA) Greg Kroah-Hartman
2017-04-06 8:38 ` [PATCH 4.10 55/81] tty/serial: atmel: fix TX path in atmel_console_write() Greg Kroah-Hartman
2017-04-06 8:38 ` [PATCH 4.10 56/81] xhci: Set URB actual length for stopped control transfers Greg Kroah-Hartman
2017-04-06 8:38 ` [PATCH 4.10 57/81] USB: fix linked-list corruption in rh_call_control() Greg Kroah-Hartman
2017-04-06 8:38 ` [PATCH 4.10 60/81] KVM: kvm_io_bus_unregister_dev() should never fail Greg Kroah-Hartman
2017-04-06 8:38 ` [PATCH 4.10 62/81] drm/vc4: Allocate the right amount of space for boot-time CRTC state Greg Kroah-Hartman
2017-04-06 8:38 ` [PATCH 4.10 63/81] drm/etnaviv: (re-)protect fence allocation with GPU mutex Greg Kroah-Hartman
2017-04-06 8:38 ` [PATCH 4.10 64/81] drm/i915/kvmgt: Hold struct kvm reference Greg Kroah-Hartman
2017-04-06 8:38 ` [PATCH 4.10 65/81] x86/mm/KASLR: Exclude EFI region from KASLR VA space randomization Greg Kroah-Hartman
2017-04-06 8:38 ` [PATCH 4.10 66/81] x86/mce: Fix copy/paste error in exception table entries Greg Kroah-Hartman
2017-04-06 8:39 ` [PATCH 4.10 68/81] mm: rmap: fix huge file mmap accounting in the memcg stats Greg Kroah-Hartman
2017-04-06 8:39 ` [PATCH 4.10 69/81] mm: workingset: fix premature shadow node shrinking with cgroups Greg Kroah-Hartman
2017-04-06 8:39 ` [PATCH 4.10 70/81] mm, hugetlb: use pte_present() instead of pmd_present() in follow_huge_pmd() Greg Kroah-Hartman
2017-04-06 8:39 ` [PATCH 4.10 71/81] drm/armada: Fix compile fail Greg Kroah-Hartman
2017-04-06 8:39 ` [PATCH 4.10 73/81] MIPS: Lantiq: Fix cascaded IRQ setup Greg Kroah-Hartman
2017-04-06 8:39 ` [PATCH 4.10 74/81] blk: improve order of bio handling in generic_make_request() Greg Kroah-Hartman
2017-04-06 8:39 ` [PATCH 4.10 75/81] blk: Ensure users for current->bio_list can see the full list Greg Kroah-Hartman
2017-04-06 8:39 ` [PATCH 4.10 76/81] padata: avoid race in reordering Greg Kroah-Hartman
2017-04-06 8:39 ` [PATCH 4.10 77/81] nvme/core: Fix race kicking freed request_queue Greg Kroah-Hartman
2017-04-06 8:39 ` [PATCH 4.10 78/81] nvme/pci: Disable on removal when disconnected Greg Kroah-Hartman
2017-04-06 8:39 ` [PATCH 4.10 80/81] drm/i915: Let execlist_update_context() cover !FULL_PPGTT mode Greg Kroah-Hartman
2017-04-06 8:39 ` [PATCH 4.10 81/81] drm/i915: A hotfix for making aliasing PPGTT work for GVT-g Greg Kroah-Hartman
2017-04-06 17:54 ` [PATCH 4.10 00/81] 4.10.9-stable review Shuah Khan
2017-04-06 18:01 ` Greg Kroah-Hartman
2017-04-06 21:53 ` Guenter Roeck
2017-04-07 8:07 ` Greg Kroah-Hartman
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=20170406083626.304352016@linuxfoundation.org \
--to=gregkh@linuxfoundation.org \
--cc=deller@gmx.de \
--cc=linux-kernel@vger.kernel.org \
--cc=stable@vger.kernel.org \
--cc=viro@ZenIV.linux.org.uk \
/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;
as well as URLs for NNTP newsgroup(s).