All of lore.kernel.org
 help / color / mirror / Atom feed
From: lizf@kernel.org
To: stable@vger.kernel.org
Cc: linux-kernel@vger.kernel.org,
	Linus Torvalds <torvalds@linux-foundation.org>,
	linux-arch@vger.kernel.org, Ben Hutchings <ben@decadent.org.uk>,
	Zefan Li <lizefan@huawei.com>
Subject: [PATCH 3.4 129/176] vm: add VM_FAULT_SIGSEGV handling support
Date: Thu,  9 Apr 2015 16:46:17 +0800	[thread overview]
Message-ID: <1428569224-23820-129-git-send-email-lizf@kernel.org> (raw)
In-Reply-To: <1428569028-23762-1-git-send-email-lizf@kernel.org>

From: Linus Torvalds <torvalds@linux-foundation.org>

3.4.107-rc1 review patch.  If anyone has any objections, please let me know.

------------------


commit 33692f27597fcab536d7cbbcc8f52905133e4aa7 upstream.

The core VM already knows about VM_FAULT_SIGBUS, but cannot return a
"you should SIGSEGV" error, because the SIGSEGV case was generally
handled by the caller - usually the architecture fault handler.

That results in lots of duplication - all the architecture fault
handlers end up doing very similar "look up vma, check permissions, do
retries etc" - but it generally works.  However, there are cases where
the VM actually wants to SIGSEGV, and applications _expect_ SIGSEGV.

In particular, when accessing the stack guard page, libsigsegv expects a
SIGSEGV.  And it usually got one, because the stack growth is handled by
that duplicated architecture fault handler.

However, when the generic VM layer started propagating the error return
from the stack expansion in commit fee7e49d4514 ("mm: propagate error
from stack expansion even for guard page"), that now exposed the
existing VM_FAULT_SIGBUS result to user space.  And user space really
expected SIGSEGV, not SIGBUS.

To fix that case, we need to add a VM_FAULT_SIGSEGV, and teach all those
duplicate architecture fault handlers about it.  They all already have
the code to handle SIGSEGV, so it's about just tying that new return
value to the existing code, but it's all a bit annoying.

This is the mindless minimal patch to do this.  A more extensive patch
would be to try to gather up the mostly shared fault handling logic into
one generic helper routine, and long-term we really should do that
cleanup.

Just from this patch, you can generally see that most architectures just
copied (directly or indirectly) the old x86 way of doing things, but in
the meantime that original x86 model has been improved to hold the VM
semaphore for shorter times etc and to handle VM_FAULT_RETRY and other
"newer" things, so it would be a good idea to bring all those
improvements to the generic case and teach other architectures about
them too.

Reported-and-tested-by: Takashi Iwai <tiwai@suse.de>
Tested-by: Jan Engelhardt <jengelh@inai.de>
Acked-by: Heiko Carstens <heiko.carstens@de.ibm.com> # "s390 still compiles and boots"
Cc: linux-arch@vger.kernel.org
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
[bwh: Backported to 3.2:
 - Adjust filenames, context
 - Drop arc, metag, nios2 and lustre changes
 - For sh, patch both 32-bit and 64-bit implementations to use goto bad_area
 - For s390, pass int_code and trans_exc_code as arguments to do_no_context()
   and do_sigsegv()]
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
[lizf: Backported to 3.4: adjust context in arch/power/mm/fault.c]
Signed-off-by: Zefan Li <lizefan@huawei.com>
---
 arch/alpha/mm/fault.c                   | 2 ++
 arch/avr32/mm/fault.c                   | 2 ++
 arch/cris/mm/fault.c                    | 2 ++
 arch/frv/mm/fault.c                     | 2 ++
 arch/ia64/mm/fault.c                    | 2 ++
 arch/m32r/mm/fault.c                    | 2 ++
 arch/m68k/mm/fault.c                    | 2 ++
 arch/microblaze/mm/fault.c              | 2 ++
 arch/mips/mm/fault.c                    | 2 ++
 arch/mn10300/mm/fault.c                 | 2 ++
 arch/openrisc/mm/fault.c                | 2 ++
 arch/parisc/mm/fault.c                  | 2 ++
 arch/powerpc/mm/fault.c                 | 6 +++++-
 arch/powerpc/platforms/cell/spu_fault.c | 2 +-
 arch/s390/mm/fault.c                    | 7 +++++++
 arch/score/mm/fault.c                   | 2 ++
 arch/sh/mm/fault_32.c                   | 2 ++
 arch/sh/mm/tlbflush_64.c                | 2 ++
 arch/sparc/mm/fault_32.c                | 2 ++
 arch/sparc/mm/fault_64.c                | 2 ++
 arch/tile/mm/fault.c                    | 2 ++
 arch/um/kernel/trap.c                   | 2 ++
 arch/x86/mm/fault.c                     | 2 ++
 arch/xtensa/mm/fault.c                  | 2 ++
 include/linux/mm.h                      | 5 +++--
 mm/ksm.c                                | 2 +-
 mm/memory.c                             | 4 ++--
 27 files changed, 61 insertions(+), 7 deletions(-)

diff --git a/arch/alpha/mm/fault.c b/arch/alpha/mm/fault.c
index 5eecab1..f153733 100644
--- a/arch/alpha/mm/fault.c
+++ b/arch/alpha/mm/fault.c
@@ -149,6 +149,8 @@ do_page_fault(unsigned long address, unsigned long mmcsr,
 	if (unlikely(fault & VM_FAULT_ERROR)) {
 		if (fault & VM_FAULT_OOM)
 			goto out_of_memory;
+		else if (fault & VM_FAULT_SIGSEGV)
+			goto bad_area;
 		else if (fault & VM_FAULT_SIGBUS)
 			goto do_sigbus;
 		BUG();
diff --git a/arch/avr32/mm/fault.c b/arch/avr32/mm/fault.c
index f7040a1..632b649 100644
--- a/arch/avr32/mm/fault.c
+++ b/arch/avr32/mm/fault.c
@@ -136,6 +136,8 @@ good_area:
 	if (unlikely(fault & VM_FAULT_ERROR)) {
 		if (fault & VM_FAULT_OOM)
 			goto out_of_memory;
+		else if (fault & VM_FAULT_SIGSEGV)
+			goto bad_area;
 		else if (fault & VM_FAULT_SIGBUS)
 			goto do_sigbus;
 		BUG();
diff --git a/arch/cris/mm/fault.c b/arch/cris/mm/fault.c
index b4760d8..b07c00c 100644
--- a/arch/cris/mm/fault.c
+++ b/arch/cris/mm/fault.c
@@ -167,6 +167,8 @@ do_page_fault(unsigned long address, struct pt_regs *regs,
 	if (unlikely(fault & VM_FAULT_ERROR)) {
 		if (fault & VM_FAULT_OOM)
 			goto out_of_memory;
+		else if (fault & VM_FAULT_SIGSEGV)
+			goto bad_area;
 		else if (fault & VM_FAULT_SIGBUS)
 			goto do_sigbus;
 		BUG();
diff --git a/arch/frv/mm/fault.c b/arch/frv/mm/fault.c
index 331c1e2..8545496 100644
--- a/arch/frv/mm/fault.c
+++ b/arch/frv/mm/fault.c
@@ -166,6 +166,8 @@ asmlinkage void do_page_fault(int datammu, unsigned long esr0, unsigned long ear
 	if (unlikely(fault & VM_FAULT_ERROR)) {
 		if (fault & VM_FAULT_OOM)
 			goto out_of_memory;
+		else if (fault & VM_FAULT_SIGSEGV)
+			goto bad_area;
 		else if (fault & VM_FAULT_SIGBUS)
 			goto do_sigbus;
 		BUG();
diff --git a/arch/ia64/mm/fault.c b/arch/ia64/mm/fault.c
index 02d29c2..3c820ea 100644
--- a/arch/ia64/mm/fault.c
+++ b/arch/ia64/mm/fault.c
@@ -162,6 +162,8 @@ ia64_do_page_fault (unsigned long address, unsigned long isr, struct pt_regs *re
 		 */
 		if (fault & VM_FAULT_OOM) {
 			goto out_of_memory;
+		} else if (fault & VM_FAULT_SIGSEGV) {
+			goto bad_area;
 		} else if (fault & VM_FAULT_SIGBUS) {
 			signal = SIGBUS;
 			goto bad_area;
diff --git a/arch/m32r/mm/fault.c b/arch/m32r/mm/fault.c
index 3cdfa9c..06827fc 100644
--- a/arch/m32r/mm/fault.c
+++ b/arch/m32r/mm/fault.c
@@ -198,6 +198,8 @@ good_area:
 	if (unlikely(fault & VM_FAULT_ERROR)) {
 		if (fault & VM_FAULT_OOM)
 			goto out_of_memory;
+		else if (fault & VM_FAULT_SIGSEGV)
+			goto bad_area;
 		else if (fault & VM_FAULT_SIGBUS)
 			goto do_sigbus;
 		BUG();
diff --git a/arch/m68k/mm/fault.c b/arch/m68k/mm/fault.c
index 6b020a8..8646409 100644
--- a/arch/m68k/mm/fault.c
+++ b/arch/m68k/mm/fault.c
@@ -146,6 +146,8 @@ good_area:
 	if (unlikely(fault & VM_FAULT_ERROR)) {
 		if (fault & VM_FAULT_OOM)
 			goto out_of_memory;
+		else if (fault & VM_FAULT_SIGSEGV)
+			goto map_err;
 		else if (fault & VM_FAULT_SIGBUS)
 			goto bus_err;
 		BUG();
diff --git a/arch/microblaze/mm/fault.c b/arch/microblaze/mm/fault.c
index c38a265..c7fe3da 100644
--- a/arch/microblaze/mm/fault.c
+++ b/arch/microblaze/mm/fault.c
@@ -214,6 +214,8 @@ good_area:
 	if (unlikely(fault & VM_FAULT_ERROR)) {
 		if (fault & VM_FAULT_OOM)
 			goto out_of_memory;
+		else if (fault & VM_FAULT_SIGSEGV)
+			goto bad_area;
 		else if (fault & VM_FAULT_SIGBUS)
 			goto do_sigbus;
 		BUG();
diff --git a/arch/mips/mm/fault.c b/arch/mips/mm/fault.c
index c14f6df..5c9ba6a 100644
--- a/arch/mips/mm/fault.c
+++ b/arch/mips/mm/fault.c
@@ -155,6 +155,8 @@ good_area:
 	if (unlikely(fault & VM_FAULT_ERROR)) {
 		if (fault & VM_FAULT_OOM)
 			goto out_of_memory;
+		else if (fault & VM_FAULT_SIGSEGV)
+			goto bad_area;
 		else if (fault & VM_FAULT_SIGBUS)
 			goto do_sigbus;
 		BUG();
diff --git a/arch/mn10300/mm/fault.c b/arch/mn10300/mm/fault.c
index 90f346f..eb411b3 100644
--- a/arch/mn10300/mm/fault.c
+++ b/arch/mn10300/mm/fault.c
@@ -255,6 +255,8 @@ good_area:
 	if (unlikely(fault & VM_FAULT_ERROR)) {
 		if (fault & VM_FAULT_OOM)
 			goto out_of_memory;
+		else if (fault & VM_FAULT_SIGSEGV)
+			goto bad_area;
 		else if (fault & VM_FAULT_SIGBUS)
 			goto do_sigbus;
 		BUG();
diff --git a/arch/openrisc/mm/fault.c b/arch/openrisc/mm/fault.c
index a5dce82..162abfb 100644
--- a/arch/openrisc/mm/fault.c
+++ b/arch/openrisc/mm/fault.c
@@ -163,6 +163,8 @@ good_area:
 	if (unlikely(fault & VM_FAULT_ERROR)) {
 		if (fault & VM_FAULT_OOM)
 			goto out_of_memory;
+		else if (fault & VM_FAULT_SIGSEGV)
+			goto bad_area;
 		else if (fault & VM_FAULT_SIGBUS)
 			goto do_sigbus;
 		BUG();
diff --git a/arch/parisc/mm/fault.c b/arch/parisc/mm/fault.c
index 18162ce..a9b765a 100644
--- a/arch/parisc/mm/fault.c
+++ b/arch/parisc/mm/fault.c
@@ -210,6 +210,8 @@ good_area:
 		 */
 		if (fault & VM_FAULT_OOM)
 			goto out_of_memory;
+		else if (fault & VM_FAULT_SIGSEGV)
+			goto bad_area;
 		else if (fault & VM_FAULT_SIGBUS)
 			goto bad_area;
 		BUG();
diff --git a/arch/powerpc/mm/fault.c b/arch/powerpc/mm/fault.c
index 08ffcf5..3d30a4a 100644
--- a/arch/powerpc/mm/fault.c
+++ b/arch/powerpc/mm/fault.c
@@ -419,7 +419,11 @@ good_area:
 	 */
 	fault = handle_mm_fault(mm, vma, address, flags);
 	if (unlikely(fault & (VM_FAULT_RETRY|VM_FAULT_ERROR))) {
-		int rc = mm_fault_error(regs, address, fault);
+		int rc;
+
+		if (fault & VM_FAULT_SIGSEGV)
+			goto bad_area;
+		rc = mm_fault_error(regs, address, fault);
 		if (rc >= MM_FAULT_RETURN)
 			return rc;
 	}
diff --git a/arch/powerpc/platforms/cell/spu_fault.c b/arch/powerpc/platforms/cell/spu_fault.c
index 641e727..62f3e4e 100644
--- a/arch/powerpc/platforms/cell/spu_fault.c
+++ b/arch/powerpc/platforms/cell/spu_fault.c
@@ -75,7 +75,7 @@ int spu_handle_mm_fault(struct mm_struct *mm, unsigned long ea,
 		if (*flt & VM_FAULT_OOM) {
 			ret = -ENOMEM;
 			goto out_unlock;
-		} else if (*flt & VM_FAULT_SIGBUS) {
+		} else if (*flt & (VM_FAULT_SIGBUS | VM_FAULT_SIGSEGV)) {
 			ret = -EFAULT;
 			goto out_unlock;
 		}
diff --git a/arch/s390/mm/fault.c b/arch/s390/mm/fault.c
index f2b11ee..f22603d 100644
--- a/arch/s390/mm/fault.c
+++ b/arch/s390/mm/fault.c
@@ -237,6 +237,13 @@ static noinline void do_fault_error(struct pt_regs *regs, int fault)
 				do_no_context(regs);
 			else
 				pagefault_out_of_memory();
+		} else if (fault & VM_FAULT_SIGSEGV) {
+			/* Kernel mode? Handle exceptions or die */
+			if (!user_mode(regs))
+				do_no_context(regs, int_code, trans_exc_code);
+			else
+				do_sigsegv(regs, int_code, SEGV_MAPERR,
+					   trans_exc_code);
 		} else if (fault & VM_FAULT_SIGBUS) {
 			/* Kernel mode? Handle exceptions or die */
 			if (!(regs->psw.mask & PSW_MASK_PSTATE))
diff --git a/arch/score/mm/fault.c b/arch/score/mm/fault.c
index 47b600e..b3744ca 100644
--- a/arch/score/mm/fault.c
+++ b/arch/score/mm/fault.c
@@ -110,6 +110,8 @@ survive:
 	if (unlikely(fault & VM_FAULT_ERROR)) {
 		if (fault & VM_FAULT_OOM)
 			goto out_of_memory;
+		else if (fault & VM_FAULT_SIGSEGV)
+			goto bad_area;
 		else if (fault & VM_FAULT_SIGBUS)
 			goto do_sigbus;
 		BUG();
diff --git a/arch/sh/mm/fault_32.c b/arch/sh/mm/fault_32.c
index e99b104..a491963 100644
--- a/arch/sh/mm/fault_32.c
+++ b/arch/sh/mm/fault_32.c
@@ -206,6 +206,8 @@ good_area:
 			goto out_of_memory;
 		else if (fault & VM_FAULT_SIGBUS)
 			goto do_sigbus;
+		else if (fault & VM_FAULT_SIGSEGV)
+			goto bad_area;
 		BUG();
 	}
 	if (fault & VM_FAULT_MAJOR) {
diff --git a/arch/sh/mm/tlbflush_64.c b/arch/sh/mm/tlbflush_64.c
index 11c5a18..92f0df9 100644
--- a/arch/sh/mm/tlbflush_64.c
+++ b/arch/sh/mm/tlbflush_64.c
@@ -194,6 +194,8 @@ good_area:
 			goto out_of_memory;
 		else if (fault & VM_FAULT_SIGBUS)
 			goto do_sigbus;
+		else if (fault & VM_FAULT_SIGSEGV)
+			goto bad_area;
 		BUG();
 	}
 
diff --git a/arch/sparc/mm/fault_32.c b/arch/sparc/mm/fault_32.c
index df3155a..5c6238d 100644
--- a/arch/sparc/mm/fault_32.c
+++ b/arch/sparc/mm/fault_32.c
@@ -300,6 +300,8 @@ good_area:
 	if (unlikely(fault & VM_FAULT_ERROR)) {
 		if (fault & VM_FAULT_OOM)
 			goto out_of_memory;
+		else if (fault & VM_FAULT_SIGSEGV)
+			goto bad_area;
 		else if (fault & VM_FAULT_SIGBUS)
 			goto do_sigbus;
 		BUG();
diff --git a/arch/sparc/mm/fault_64.c b/arch/sparc/mm/fault_64.c
index 1387aca..0dc7b90 100644
--- a/arch/sparc/mm/fault_64.c
+++ b/arch/sparc/mm/fault_64.c
@@ -443,6 +443,8 @@ good_area:
 	if (unlikely(fault & VM_FAULT_ERROR)) {
 		if (fault & VM_FAULT_OOM)
 			goto out_of_memory;
+		else if (fault & VM_FAULT_SIGSEGV)
+			goto bad_area;
 		else if (fault & VM_FAULT_SIGBUS)
 			goto do_sigbus;
 		BUG();
diff --git a/arch/tile/mm/fault.c b/arch/tile/mm/fault.c
index 22e58f5..a362926 100644
--- a/arch/tile/mm/fault.c
+++ b/arch/tile/mm/fault.c
@@ -433,6 +433,8 @@ good_area:
 	if (unlikely(fault & VM_FAULT_ERROR)) {
 		if (fault & VM_FAULT_OOM)
 			goto out_of_memory;
+		else if (fault & VM_FAULT_SIGSEGV)
+			goto bad_area;
 		else if (fault & VM_FAULT_SIGBUS)
 			goto do_sigbus;
 		BUG();
diff --git a/arch/um/kernel/trap.c b/arch/um/kernel/trap.c
index dafc947..f79ffc9 100644
--- a/arch/um/kernel/trap.c
+++ b/arch/um/kernel/trap.c
@@ -69,6 +69,8 @@ good_area:
 		if (unlikely(fault & VM_FAULT_ERROR)) {
 			if (fault & VM_FAULT_OOM) {
 				goto out_of_memory;
+			} else if (fault & VM_FAULT_SIGSEGV) {
+				goto out;
 			} else if (fault & VM_FAULT_SIGBUS) {
 				err = -EACCES;
 				goto out;
diff --git a/arch/x86/mm/fault.c b/arch/x86/mm/fault.c
index 4a0a2e8..b723f2e 100644
--- a/arch/x86/mm/fault.c
+++ b/arch/x86/mm/fault.c
@@ -887,6 +887,8 @@ mm_fault_error(struct pt_regs *regs, unsigned long error_code,
 		if (fault & (VM_FAULT_SIGBUS|VM_FAULT_HWPOISON|
 			     VM_FAULT_HWPOISON_LARGE))
 			do_sigbus(regs, error_code, address, fault);
+		else if (fault & VM_FAULT_SIGSEGV)
+			bad_area_nosemaphore(regs, error_code, address);
 		else
 			BUG();
 	}
diff --git a/arch/xtensa/mm/fault.c b/arch/xtensa/mm/fault.c
index b17885a..b3877be 100644
--- a/arch/xtensa/mm/fault.c
+++ b/arch/xtensa/mm/fault.c
@@ -108,6 +108,8 @@ good_area:
 	if (unlikely(fault & VM_FAULT_ERROR)) {
 		if (fault & VM_FAULT_OOM)
 			goto out_of_memory;
+		else if (fault & VM_FAULT_SIGSEGV)
+			goto bad_area;
 		else if (fault & VM_FAULT_SIGBUS)
 			goto do_sigbus;
 		BUG();
diff --git a/include/linux/mm.h b/include/linux/mm.h
index dacfd4a..ceebf63 100644
--- a/include/linux/mm.h
+++ b/include/linux/mm.h
@@ -841,6 +841,7 @@ static inline int page_mapped(struct page *page)
 #define VM_FAULT_WRITE	0x0008	/* Special case for get_user_pages */
 #define VM_FAULT_HWPOISON 0x0010	/* Hit poisoned small page */
 #define VM_FAULT_HWPOISON_LARGE 0x0020  /* Hit poisoned large page. Index encoded in upper bits */
+#define VM_FAULT_SIGSEGV 0x0040
 
 #define VM_FAULT_NOPAGE	0x0100	/* ->fault installed the pte, not return page */
 #define VM_FAULT_LOCKED	0x0200	/* ->fault locked the returned page */
@@ -848,8 +849,8 @@ static inline int page_mapped(struct page *page)
 
 #define VM_FAULT_HWPOISON_LARGE_MASK 0xf000 /* encodes hpage index for large hwpoison */
 
-#define VM_FAULT_ERROR	(VM_FAULT_OOM | VM_FAULT_SIGBUS | VM_FAULT_HWPOISON | \
-			 VM_FAULT_HWPOISON_LARGE)
+#define VM_FAULT_ERROR	(VM_FAULT_OOM | VM_FAULT_SIGBUS | VM_FAULT_SIGSEGV | \
+			 VM_FAULT_HWPOISON | VM_FAULT_HWPOISON_LARGE)
 
 /* Encode hstate index for a hwpoisoned large page */
 #define VM_FAULT_SET_HINDEX(x) ((x) << 12)
diff --git a/mm/ksm.c b/mm/ksm.c
index 47c8853..77c7118 100644
--- a/mm/ksm.c
+++ b/mm/ksm.c
@@ -342,7 +342,7 @@ static int break_ksm(struct vm_area_struct *vma, unsigned long addr)
 		else
 			ret = VM_FAULT_WRITE;
 		put_page(page);
-	} while (!(ret & (VM_FAULT_WRITE | VM_FAULT_SIGBUS | VM_FAULT_OOM)));
+	} while (!(ret & (VM_FAULT_WRITE | VM_FAULT_SIGBUS | VM_FAULT_SIGSEGV | VM_FAULT_OOM)));
 	/*
 	 * We must loop because handle_mm_fault() may back out if there's
 	 * any difficulty e.g. if pte accessed bit gets updated concurrently.
diff --git a/mm/memory.c b/mm/memory.c
index c9c93e2..f573cec 100644
--- a/mm/memory.c
+++ b/mm/memory.c
@@ -1787,7 +1787,7 @@ int __get_user_pages(struct task_struct *tsk, struct mm_struct *mm,
 						else
 							return -EFAULT;
 					}
-					if (ret & VM_FAULT_SIGBUS)
+					if (ret & (VM_FAULT_SIGBUS | VM_FAULT_SIGSEGV))
 						return i ? i : -EFAULT;
 					BUG();
 				}
@@ -1891,7 +1891,7 @@ int fixup_user_fault(struct task_struct *tsk, struct mm_struct *mm,
 			return -ENOMEM;
 		if (ret & (VM_FAULT_HWPOISON | VM_FAULT_HWPOISON_LARGE))
 			return -EHWPOISON;
-		if (ret & VM_FAULT_SIGBUS)
+		if (ret & (VM_FAULT_SIGBUS | VM_FAULT_SIGSEGV))
 			return -EFAULT;
 		BUG();
 	}
-- 
1.9.1


  parent reply	other threads:[~2015-04-09  9:24 UTC|newest]

Thread overview: 192+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-04-09  8:43 [PATCH 3.4 000/176] 3.4.107-rc1 review lizf
2015-04-09  8:44 ` [PATCH 3.4 001/176] spi: dw: Fix dynamic speed change lizf
2015-04-09  8:44 ` [PATCH 3.4 002/176] USB: serial: cp210x: add IDs for CEL MeshConnect USB Stick lizf
2015-04-09  8:44 ` [PATCH 3.4 003/176] iio: Fix IIO_EVENT_CODE_EXTRACT_DIR bit mask lizf
2015-04-09  8:44 ` [PATCH 3.4 004/176] usb: serial: ftdi_sio: add PIDs for Matrix Orbital products lizf
2015-04-09  8:44 ` [PATCH 3.4 005/176] USB: keyspan: fix tty line-status reporting lizf
2015-04-09  8:44 ` [PATCH 3.4 006/176] USB: keyspan: fix overrun-error reporting lizf
2015-04-09  8:44 ` [PATCH 3.4 007/176] USB: ssu100: " lizf
2015-04-09  8:44 ` [PATCH 3.4 008/176] SUNRPC: Fix locking around callback channel reply receive lizf
2015-04-09  8:44 ` [PATCH 3.4 009/176] nfsd: Fix slot wake up race in the nfsv4.1 callback code lizf
2015-04-09  8:44 ` [PATCH 3.4 010/176] bnx2fc: do not add shared skbs to the fcoe_rx_list lizf
2015-04-09  8:44 ` [PATCH 3.4 011/176] ARM: 8216/1: xscale: correct auxiliary register in suspend/resume lizf
2015-04-09  8:44 ` [PATCH 3.4 012/176] USB: xhci: don't start a halted endpoint before its new dequeue is set lizf
2015-04-09  8:44 ` [PATCH 3.4 013/176] USB: xhci: Reset a halted endpoint immediately when we encounter a stall lizf
2015-04-09  8:44 ` [PATCH 3.4 014/176] usb: xhci: rework root port wake bits if controller isn't allowed to wakeup lizf
2015-04-09  8:44 ` [PATCH 3.4 015/176] ALSA: hda - Limit 40bit DMA for AMD HDMI controllers lizf
2015-04-09  8:44 ` [PATCH 3.4 016/176] MIPS: Loongson: Make platform serial setup always built-in lizf
2015-04-09  8:44 ` [PATCH 3.4 017/176] usb-quirks: Add reset-resume quirk for MS Wireless Laser Mouse 6000 lizf
2015-04-09  8:44 ` [PATCH 3.4 018/176] Input: xpad - use proper endpoint type lizf
2015-04-09  8:44 ` [PATCH 3.4 019/176] powerpc/pseries: Fix endiannes issue in RTAS call from xmon lizf
2015-04-09  8:44 ` [PATCH 3.4 020/176] drm/i915: Unlock panel even when LVDS is disabled lizf
2015-04-09  8:44 ` [PATCH 3.4 021/176] AHCI: Add DeviceIDs for Sunrise Point-LP SATA controller lizf
2015-04-09  8:44 ` [PATCH 3.4 022/176] sata_fsl: fix error handling of irq_of_parse_and_map lizf
2015-04-09  8:44 ` [PATCH 3.4 023/176] drm/radeon: kernel panic in drm_calc_vbltimestamp_from_scanoutpos with 3.18.0-rc6 lizf
2015-04-09  8:44 ` [PATCH 3.4 024/176] mm: fix swapoff hang after page migration and fork lizf
2015-04-09  8:44 ` [PATCH 3.4 025/176] ahci: disable NCQ on Samsung pci-e SSDs on macbooks lizf
2015-04-09  8:44 ` [PATCH 3.4 026/176] ahci: disable MSI instead of " lizf
2015-04-09  8:44 ` [PATCH 3.4 027/176] ahci: disable MSI on SAMSUNG 0xa800 SSD lizf
2015-04-09  8:44 ` [PATCH 3.4 028/176] i2c: davinci: generate STP always when NACK is received lizf
2015-04-09  8:44 ` [PATCH 3.4 029/176] eCryptfs: Force RO mount when encrypted view is enabled lizf
2015-04-09  8:44 ` [PATCH 3.4 030/176] writeback: Move I_DIRTY_PAGES handling lizf
2015-04-09  8:44 ` [PATCH 3.4 031/176] writeback: fix a subtle race condition in I_DIRTY clearing lizf
2015-04-09  8:44 ` [PATCH 3.4 032/176] usb: renesas_usbhs: gadget: fix NULL pointer dereference in ep_disable() lizf
2015-04-09  8:44 ` [PATCH 3.4 033/176] KVM: s390: flush CPU on load control lizf
2015-04-09 10:17   ` Christian Borntraeger
2015-04-10  1:45     ` Zefan Li
2015-05-04 23:40     ` Ben Hutchings
2015-04-09  8:44 ` [PATCH 3.4 034/176] UBI: Fix invalid vfree() lizf
2015-04-09  8:44 ` [PATCH 3.4 035/176] driver core: Fix unbalanced device reference in drivers_probe lizf
2015-04-09  8:44 ` [PATCH 3.4 036/176] drbd: merge_bvec_fn: properly remap bvm->bi_bdev lizf
2015-04-09  8:44 ` [PATCH 3.4 037/176] PCI: Restore detection of read-only BARs lizf
2015-04-09 13:03   ` Myron Stowe
2015-04-10  1:44     ` Zefan Li
2015-04-09  8:44 ` [PATCH 3.4 038/176] scsi: correct return values for .eh_abort_handler implementations lizf
2015-04-09  8:44 ` [PATCH 3.4 039/176] genhd: check for int overflow in disk_expand_part_tbl() lizf
2015-04-09  8:44 ` [PATCH 3.4 040/176] ASoC: sigmadsp: Refuse to load firmware files with a non-supported version lizf
2015-04-09  8:44 ` [PATCH 3.4 041/176] megaraid_sas: corrected return of wait_event from abort frame path lizf
2015-04-09  8:44 ` [PATCH 3.4 042/176] cdc-acm: memory leak in error case lizf
2015-04-09  8:44 ` [PATCH 3.4 043/176] USB: cdc-acm: check for valid interfaces lizf
2015-04-09  8:44 ` [PATCH 3.4 044/176] mfd: tc6393xb: Fail ohci suspend if full state restore is required lizf
2015-04-09  8:44 ` [PATCH 3.4 045/176] serial: samsung: wait for transfer completion before clock disable lizf
2015-04-09  8:44 ` [PATCH 3.4 046/176] eCryptfs: Remove buggy and unnecessary write in file name decode routine lizf
2015-04-09  8:44 ` [PATCH 3.4 047/176] ath9k_hw: fix hardware queue allocation lizf
2015-04-09  8:44 ` [PATCH 3.4 048/176] ath9k: fix BE/BK queue order lizf
2015-04-09  8:44 ` [PATCH 3.4 049/176] ath5k: fix hardware queue index assignment lizf
2015-04-09  8:44 ` [PATCH 3.4 050/176] iommu/vt-d: Fix an off-by-one bug in __domain_mapping() lizf
2015-04-09  8:44 ` [PATCH 3.4 051/176] drm/vmwgfx: Don't use memory accounting for kernel-side fence objects lizf
2015-04-09  8:45 ` [PATCH 3.4 052/176] drm/vmwgfx: Fix fence event code lizf
2015-04-09  8:45 ` [PATCH 3.4 053/176] hp_accel: Add support for HP ZBook 15 lizf
2015-04-09  8:45 ` [PATCH 3.4 054/176] drm/radeon: check the right ring in radeon_evict_flags() lizf
2015-04-09  8:45 ` [PATCH 3.4 055/176] can: peak_usb: fix memset() usage lizf
2015-04-09  8:45 ` [PATCH 3.4 056/176] can: peak_usb: fix cleanup sequence order in case of error during init lizf
2015-04-09  8:45 ` [PATCH 3.4 057/176] ALSA: usb-audio: Don't resubmit pending URBs at MIDI error recovery lizf
2015-04-09  8:45 ` [PATCH 3.4 058/176] KEYS: Fix stale key registration at error path lizf
2015-04-09  8:45 ` [PATCH 3.4 059/176] Btrfs: fix fs corruption on transaction abort if device supports discard lizf
2015-04-09  8:45 ` [PATCH 3.4 060/176] ncpfs: return proper error from NCP_IOC_SETROOT ioctl lizf
2015-04-09  8:45 ` [PATCH 3.4 061/176] x86_64, switch_to(): Load TLS descriptors before switching DS and ES lizf
2015-04-09  8:45 ` [PATCH 3.4 062/176] genirq: Prevent proc race against freeing of irq descriptors lizf
2015-04-09  8:45 ` [PATCH 3.4 063/176] x86/tls: Disallow unusual TLS segments lizf
2015-04-09  8:45 ` [PATCH 3.4 064/176] x86/tls: Don't validate lm in set_thread_area() after all lizf
2015-04-09  8:45 ` [PATCH 3.4 065/176] storvsc: ring buffer failures may result in I/O freeze lizf
2015-04-09  8:45 ` [PATCH 3.4 066/176] isofs: Fix infinite looping over CE entries lizf
2015-04-09  8:45 ` [PATCH 3.4 067/176] iscsi-target: Fail connection on short sendmsg writes lizf
2015-04-09  8:45 ` [PATCH 3.4 068/176] ALSA: usb-audio: extend KEF X300A FU 10 tweak to Arcam rPAC lizf
2015-04-09  8:45 ` [PATCH 3.4 069/176] ocfs2: fix journal commit deadlock lizf
2015-04-09  8:45 ` [PATCH 3.4 070/176] isofs: Fix unchecked printing of ER records lizf
2015-04-09  8:45 ` [PATCH 3.4 071/176] udf: Verify i_size when loading inode lizf
2015-04-09  8:45 ` [PATCH 3.4 072/176] udf: Verify symlink size before loading it lizf
2015-04-09  8:45 ` [PATCH 3.4 073/176] udf: Check path length when reading symlink lizf
2015-04-09  8:45 ` [PATCH 3.4 074/176] x86_64, vdso: Fix the vdso address randomization algorithm lizf
2015-04-09  8:45 ` [PATCH 3.4 075/176] udf: Check component length before reading it lizf
2015-04-09  8:45 ` [PATCH 3.4 076/176] crypto: af_alg - fix backlog handling lizf
2015-04-09  8:45 ` [PATCH 3.4 077/176] net: Fix stacked vlan offload features computation lizf
2015-04-10  0:49   ` Toshiaki Makita
2015-04-10  1:40     ` Zefan Li
2015-04-09  8:45 ` [PATCH 3.4 078/176] video/logo: prevent use of logos after they have been freed lizf
2015-04-09  8:45 ` [PATCH 3.4 079/176] USB: cp210x: fix ID for production CEL MeshConnect USB Stick lizf
2015-04-09  8:45 ` [PATCH 3.4 080/176] x86, um: actually mark system call tables readonly lizf
2015-04-09  8:45 ` [PATCH 3.4 081/176] ALSA: hda - Fix wrong gpio_dir & gpio_mask hint setups for IDT/STAC codecs lizf
2015-04-09  8:45 ` [PATCH 3.4 082/176] virtio: use dev_to_virtio wrapper in virtio lizf
2015-04-09  8:45 ` [PATCH 3.4 083/176] virtio_pci: defer kfree until release callback lizf
2015-04-09  8:45 ` [PATCH 3.4 084/176] virtio_pci: document why we defer kfree lizf
2015-04-09  8:45 ` [PATCH 3.4 085/176] USB: cp210x: add IDs for CEL USB sticks and MeshWorks devices lizf
2015-04-09  8:45 ` [PATCH 3.4 086/176] mm: propagate error from stack expansion even for guard page lizf
2015-04-09  8:45 ` [PATCH 3.4 087/176] sata_dwc_460ex: fix resource leak on error path lizf
2015-04-09  8:45 ` [PATCH 3.4 088/176] time: settimeofday: Validate the values of tv from user lizf
2015-04-09  8:45 ` [PATCH 3.4 089/176] time: adjtimex: Validate the ADJ_FREQUENCY values lizf
2015-04-09  8:45 ` [PATCH 3.4 090/176] Input: i8042 - reset keyboard to fix Elantech touchpad detection lizf
2015-04-09  8:45 ` [PATCH 3.4 091/176] Input: I8042 - add Acer Aspire 7738 to the nomux list lizf
2015-04-09  8:45 ` [PATCH 3.4 092/176] mac80211: fix multicast LED blinking and counter lizf
2015-04-09  8:45 ` [PATCH 3.4 093/176] mm: prevent endless growth of anon_vma hierarchy lizf
2015-04-09  8:45 ` [PATCH 3.4 094/176] mm: protect set_page_dirty() from ongoing truncation lizf
2015-04-09  8:45 ` [PATCH 3.4 095/176] HID: roccat: potential out of bounds in pyra_sysfs_write_settings() lizf
2015-04-09  8:45 ` [PATCH 3.4 096/176] OHCI: add a quirk for ULi M5237 blocking on reset lizf
2015-04-09  8:45 ` [PATCH 3.4 097/176] USB: console: fix potential use after free lizf
2015-04-09  8:45 ` [PATCH 3.4 098/176] mm: Don't count the stack guard page towards RLIMIT_STACK lizf
2015-04-09  8:45 ` [PATCH 3.4 099/176] mm: fix corner case in anon_vma endless growing prevention lizf
2015-04-09  8:45 ` [PATCH 3.4 100/176] gpio: fix memory and reference leaks in gpiochip_add error path lizf
2015-04-09  8:45 ` [PATCH 3.4 101/176] usb: dwc3: gadget: Stop TRB preparation after limit is reached lizf
2015-04-09  8:45 ` [PATCH 3.4 102/176] ftrace/jprobes/x86: Fix conflict between jprobes and function graph tracing lizf
2015-04-09  8:45 ` [PATCH 3.4 103/176] can: dev: fix crtlmode_supported check lizf
2015-04-09  8:45 ` [PATCH 3.4 104/176] sysfs.h: add ATTRIBUTE_GROUPS() macro lizf
2015-04-09  8:45 ` [PATCH 3.4 105/176] driver core: Introduce device_create_groups lizf
2015-04-09  8:45 ` [PATCH 3.4 106/176] gpio: sysfs: fix gpio-chip device-attribute leak lizf
2015-04-09  8:45 ` [PATCH 3.4 107/176] gpiolib: Refactor gpio_export lizf
2015-04-09  8:45 ` [PATCH 3.4 108/176] gpio: sysfs: fix gpio device-attribute leak lizf
2015-04-09  8:45 ` [PATCH 3.4 109/176] gpio: sysfs: fix gpio attribute-creation race lizf
2015-04-09  8:45 ` [PATCH 3.4 110/176] ALSA: usb-audio: Add mic volume fix quirk for Logitech Webcam C210 lizf
2015-04-09  8:45 ` [PATCH 3.4 111/176] libata: allow sata_sil24 to opt-out of tag ordered submission lizf
2015-04-09  8:46 ` [PATCH 3.4 112/176] scripts/recordmcount.pl: There is no -m32 gcc option on Super-H anymore lizf
2015-04-09  8:46 ` [PATCH 3.4 113/176] libata: prevent HSM state change race between ISR and PIO lizf
2015-04-09  8:46 ` [PATCH 3.4 114/176] x86, hyperv: Mark the Hyper-V clocksource as being continuous lizf
2015-04-09  8:46 ` [PATCH 3.4 115/176] spi: dw: Fix detecting FIFO depth lizf
2015-04-09  9:37   ` Axel Lin
2015-04-10  1:52     ` Zefan Li
2015-04-09  8:46 ` [PATCH 3.4 116/176] spi: dw-mid: fix FIFO size lizf
2015-04-09  8:46 ` [PATCH 3.4 117/176] ASoC: wm8960: Fix capture sample rate from 11250 to 11025 lizf
2015-04-09  8:46 ` [PATCH 3.4 118/176] regulator: core: fix race condition in regulator_put() lizf
2015-04-09  8:46 ` [PATCH 3.4 119/176] powerpc/xmon: Fix another endiannes issue in RTAS call from xmon lizf
2015-04-09  8:46 ` [PATCH 3.4 120/176] nl80211: fix per-station group key get/del and memory leak lizf
2015-04-09  8:46 ` [PATCH 3.4 121/176] usb-storage/SCSI: Add broken_fua blacklist flag lizf
2015-04-09  8:46 ` [PATCH 3.4 122/176] usb-storage/SCSI: blacklist FUA on JMicron 152d:2566 USB-SATA controller lizf
2015-04-09  8:46 ` [PATCH 3.4 123/176] usb-core bInterval quirk lizf
2015-04-09  8:46 ` [PATCH 3.4 124/176] USB: Add OTG PET device to TPL lizf
2015-04-09  8:46 ` [PATCH 3.4 125/176] drm/i915: Only fence tiled region of object lizf
2015-04-09  8:46 ` [PATCH 3.4 126/176] ALSA: seq-dummy: remove deadlock-causing events on close lizf
2015-04-09  8:46 ` [PATCH 3.4 127/176] net: sctp: fix slab corruption from use after free on INIT collisions lizf
2015-04-09  8:46 ` [PATCH 3.4 128/176] ipv6: replacing a rt6_info needs to purge possible propagated rt6_infos too lizf
2015-04-09  8:46 ` lizf [this message]
2015-04-09  8:46 ` [PATCH 3.4 130/176] vm: make stack guard page errors return VM_FAULT_SIGSEGV rather than SIGBUS lizf
2015-04-09  8:46 ` [PATCH 3.4 131/176] net: sctp: fix panic on duplicate ASCONF chunks lizf
2015-04-09  8:46 ` [PATCH 3.4 132/176] net: sctp: fix skb_over_panic when receiving malformed " lizf
2015-04-09  8:46 ` [PATCH 3.4 133/176] x86, mm/ASLR: Fix stack randomization on 64-bit systems lizf
2015-04-09  8:46 ` [PATCH 3.4 134/176] KEYS: close race between key lookup and freeing lizf
2015-04-09  8:46 ` [PATCH 3.4 135/176] move d_rcu from overlapping d_child to overlapping d_alias lizf
2015-04-09  8:46 ` [PATCH 3.4 136/176] deal with deadlock in d_walk() lizf
2015-04-09  8:46 ` [PATCH 3.4 137/176] MIPS: IRQ: Fix disable_irq on CPU IRQs lizf
2015-04-09  8:46 ` [PATCH 3.4 138/176] ASoC: atmel_ssc_dai: fix start event for I2S mode lizf
2015-04-09  8:46 ` [PATCH 3.4 139/176] ALSA: ak411x: Fix stall in work callback lizf
2015-04-09  8:46 ` [PATCH 3.4 140/176] lib/checksum.c: fix carry in csum_tcpudp_nofold lizf
2015-04-09 17:44   ` Karl Beldan
2015-04-09 18:20     ` David Miller
2015-04-10  1:42     ` Zefan Li
2015-04-09  8:46 ` [PATCH 3.4 141/176] caif: remove wrong dev_net_set() call lizf
2015-04-09  8:46 ` [PATCH 3.4 142/176] MIPS: Fix kernel lockup or crash after CPU offline/online lizf
2015-04-09  8:46 ` [PATCH 3.4 143/176] gpio: sysfs: fix memory leak in gpiod_export_link lizf
2015-04-09  8:46 ` [PATCH 3.4 144/176] gpio: sysfs: fix memory leak in gpiod_sysfs_set_active_low lizf
2015-04-09  8:46 ` [PATCH 3.4 145/176] MIPS: Fix C0_Pagegrain[IEC] support lizf
2015-04-09  8:46 ` [PATCH 3.4 146/176] net: sctp: fix NULL pointer dereference in af->from_addr_param on malformed packet lizf
2015-04-09  8:46 ` [PATCH 3.4 147/176] net: sctp: fix passing wrong parameter header to param_type2af in sctp_process_param lizf
2015-04-09  8:46 ` [PATCH 3.4 148/176] ASoC: sgtl5000: add delay before first I2C access lizf
2015-04-09  8:46 ` [PATCH 3.4 149/176] nilfs2: fix deadlock of segment constructor over I_SYNC flag lizf
2015-04-09  8:46 ` [PATCH 3.4 150/176] Drivers: hv: vmbus: incorrect device name is printed when child device is unregistered lizf
2015-04-09  8:46 ` [PATCH 3.4 151/176] Bluetooth: sort the list of IDs in the source code lizf
2015-04-09  8:46 ` [PATCH 3.4 152/176] Bluetooth: append new supported device to the list [0b05:17d0] lizf
2015-04-09  8:46 ` [PATCH 3.4 153/176] Bluetooth: Add support for Intel bootloader devices lizf
2015-04-09  8:46 ` [PATCH 3.4 154/176] Bluetooth: Ignore isochronous endpoints for Intel USB bootloader lizf
2015-04-09  8:46 ` [PATCH 3.4 155/176] Bluetooth: Add support for Acer [13D3:3432] lizf
2015-04-09  8:46 ` [PATCH 3.4 156/176] Bluetooth: Add support for Broadcom device of Asus Z97-DELUXE motherboard lizf
2015-04-09  8:46 ` [PATCH 3.4 157/176] Add a new PID/VID 0227/0930 for AR3012 lizf
2015-04-09  8:46 ` [PATCH 3.4 158/176] Bluetooth: Add support for Acer [0489:e078] lizf
2015-04-09  8:46 ` [PATCH 3.4 159/176] Bluetooth: ath3k: Add support of MCI 13d3:3408 bt device lizf
2015-04-09  8:46 ` [PATCH 3.4 160/176] Bluetooth: Add USB device 04ca:3010 as Atheros AR3012 lizf
2015-04-09  8:46 ` [PATCH 3.4 161/176] pagemap: do not leak physical addresses to non-privileged userspace lizf
2015-04-09  8:46 ` [PATCH 3.4 162/176] Bluetooth: Fix invalid length check in l2cap_information_rsp() lizf
2015-04-09  8:46 ` [PATCH 3.4 163/176] jfs: fix readdir regression lizf
2015-04-09  8:46 ` [PATCH 3.4 164/176] ipvs: rerouting to local clients is not needed anymore lizf
2015-04-09  8:46 ` [PATCH 3.4 165/176] staging: comedi: cb_pcidas64: fix incorrect AI range code handling lizf
2015-04-09  8:46 ` [PATCH 3.4 166/176] Bluetooth: ath3k: workaround the compatibility issue with xHCI controller lizf
2015-04-09  8:46 ` [PATCH 3.4 167/176] sched/rt: Reduce rq lock contention by eliminating locking of non-feasible target lizf
2015-04-09  8:46 ` [PATCH 3.4 168/176] net:socket: set msg_namelen to 0 if msg_name is passed as NULL in msghdr struct from userland lizf
2015-04-09  8:46 ` [PATCH 3.4 169/176] fsnotify: next_i is freed during fsnotify_unmount_inodes lizf
2015-04-09  8:46 ` [PATCH 3.4 170/176] x86, cpu, amd: Add workaround for family 16h, erratum 793 lizf
2015-04-09  8:46 ` [PATCH 3.4 171/176] s390/3215: fix tty output containing tabs lizf
2015-04-09  8:47 ` [PATCH 3.4 172/176] ntp: Fixup adjtimex freq validation on 32-bit systems lizf
2015-04-09  8:47 ` [PATCH 3.4 173/176] spi: dw: revisit FIFO size detection again lizf
2015-04-09  8:47 ` [PATCH 3.4 174/176] nilfs2: fix deadlock of segment constructor during recovery lizf
2015-04-09  8:47 ` [PATCH 3.4 175/176] net: compat: Update get_compat_msghdr() to match copy_msghdr_from_user() behaviour lizf
2015-04-09  8:47 ` [PATCH 3.4 176/176] mm: fix anon_vma->degree underflow in anon_vma endless growing prevention lizf
2015-04-09 15:20 ` [PATCH 3.4 000/176] 3.4.107-rc1 review Guenter Roeck
2015-04-13  2:01   ` Zefan Li
2015-04-13  4:19     ` Guenter Roeck

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=1428569224-23820-129-git-send-email-lizf@kernel.org \
    --to=lizf@kernel.org \
    --cc=ben@decadent.org.uk \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=lizefan@huawei.com \
    --cc=stable@vger.kernel.org \
    --cc=torvalds@linux-foundation.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.