linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
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;
 		/*

  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).