public inbox for linux-kernel@vger.kernel.org
 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, Stephan Schreiber <info@fs-driver.org>,
	Tony Luck <tony.luck@intel.com>
Subject: [ 054/115] Wrong asm register contraints in the futex implementation
Date: Mon,  6 May 2013 13:44:50 -0700	[thread overview]
Message-ID: <20130506203101.110885950@linuxfoundation.org> (raw)
In-Reply-To: <20130506203055.537199268@linuxfoundation.org>

3.9-stable review patch.  If anyone has any objections, please let me know.

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

From: Stephan Schreiber <info@fs-driver.org>

commit 136f39ddc53db3bcee2befbe323a56d4fbf06da8 upstream.

The Linux Kernel contains some inline assembly source code which has
wrong asm register constraints in arch/ia64/include/asm/futex.h.

I observed this on Kernel 3.2.23 but it is also true on the most
recent Kernel 3.9-rc1.

File arch/ia64/include/asm/futex.h:

static inline int
futex_atomic_cmpxchg_inatomic(u32 *uval, u32 __user *uaddr,
			      u32 oldval, u32 newval)
{
	if (!access_ok(VERIFY_WRITE, uaddr, sizeof(u32)))
		return -EFAULT;

	{
		register unsigned long r8 __asm ("r8");
		unsigned long prev;
		__asm__ __volatile__(
			"	mf;;					\n"
			"	mov %0=r0				\n"
			"	mov ar.ccv=%4;;				\n"
			"[1:]	cmpxchg4.acq %1=[%2],%3,ar.ccv		\n"
			"	.xdata4 \"__ex_table\", 1b-., 2f-.	\n"
			"[2:]"
			: "=r" (r8), "=r" (prev)
			: "r" (uaddr), "r" (newval),
			  "rO" ((long) (unsigned) oldval)
			: "memory");
		*uval = prev;
		return r8;
	}
}

The list of output registers is
			: "=r" (r8), "=r" (prev)
The constraint "=r" means that the GCC has to maintain that these vars
are in registers and contain valid info when the program flow leaves
the assembly block (output registers).
But "=r" also means that GCC can put them in registers that are used
as input registers. Input registers are uaddr, newval, oldval on the
example.
The second assembly instruction
			"	mov %0=r0				\n"
is the first one which writes to a register; it sets %0 to 0. %0 means
the first register operand; it is r8 here. (The r0 is read-only and
always 0 on the Itanium; it can be used if an immediate zero value is
needed.)
This instruction might overwrite one of the other registers which are
still needed.
Whether it really happens depends on how GCC decides what registers it
uses and how it optimizes the code.

The objdump utility can give us disassembly.
The futex_atomic_cmpxchg_inatomic() function is inline, so we have to
look for a module that uses the funtion. This is the
cmpxchg_futex_value_locked() function in
kernel/futex.c:

static int cmpxchg_futex_value_locked(u32 *curval, u32 __user *uaddr,
				      u32 uval, u32 newval)
{
	int ret;

	pagefault_disable();
	ret = futex_atomic_cmpxchg_inatomic(curval, uaddr, uval, newval);
	pagefault_enable();

	return ret;
}

Now the disassembly. At first from the Kernel package 3.2.23 which has
been compiled with GCC 4.4, remeber this Kernel seemed to work:
objdump -d linux-3.2.23/debian/build/build_ia64_none_mckinley/kernel/futex.o

0000000000000230 <cmpxchg_futex_value_locked>:
      230:	0b 18 80 1b 18 21 	[MMI]       adds r3=3168,r13;;
      236:	80 40 0d 00 42 00 	            adds r8=40,r3
      23c:	00 00 04 00       	            nop.i 0x0;;
      240:	0b 50 00 10 10 10 	[MMI]       ld4 r10=[r8];;
      246:	90 08 28 00 42 00 	            adds r9=1,r10
      24c:	00 00 04 00       	            nop.i 0x0;;
      250:	09 00 00 00 01 00 	[MMI]       nop.m 0x0
      256:	00 48 20 20 23 00 	            st4 [r8]=r9
      25c:	00 00 04 00       	            nop.i 0x0;;
      260:	08 10 80 06 00 21 	[MMI]       adds r2=32,r3
      266:	00 00 00 02 00 00 	            nop.m 0x0
      26c:	02 08 f1 52       	            extr.u r16=r33,0,61
      270:	05 40 88 00 08 e0 	[MLX]       addp4 r8=r34,r0
      276:	ff ff 0f 00 00 e0 	            movl r15=0xfffffffbfff;;
      27c:	f1 f7 ff 65
      280:	09 70 00 04 18 10 	[MMI]       ld8 r14=[r2]
      286:	00 00 00 02 00 c0 	            nop.m 0x0
      28c:	f0 80 1c d0       	            cmp.ltu p6,p7=r15,r16;;
      290:	08 40 fc 1d 09 3b 	[MMI]       cmp.eq p8,p9=-1,r14
      296:	00 00 00 02 00 40 	            nop.m 0x0
      29c:	e1 08 2d d0       	            cmp.ltu p10,p11=r14,r33
      2a0:	56 01 10 00 40 10 	[BBB] (p10) br.cond.spnt.few 2e0
<cmpxchg_futex_value_locked+0xb0>
      2a6:	02 08 00 80 21 03 	      (p08) br.cond.dpnt.few 2b0
<cmpxchg_futex_value_locked+0x80>
      2ac:	40 00 00 41       	      (p06) br.cond.spnt.few 2e0
<cmpxchg_futex_value_locked+0xb0>
      2b0:	0a 00 00 00 22 00 	[MMI]       mf;;
      2b6:	80 00 00 00 42 00 	            mov r8=r0
      2bc:	00 00 04 00       	            nop.i 0x0
      2c0:	0b 00 20 40 2a 04 	[MMI]       mov.m ar.ccv=r8;;
      2c6:	10 1a 85 22 20 00 	            cmpxchg4.acq r33=[r33],r35,ar.ccv
      2cc:	00 00 04 00       	            nop.i 0x0;;
      2d0:	10 00 84 40 90 11 	[MIB]       st4 [r32]=r33
      2d6:	00 00 00 02 00 00 	            nop.i 0x0
      2dc:	20 00 00 40       	            br.few 2f0
<cmpxchg_futex_value_locked+0xc0>
      2e0:	09 40 c8 f9 ff 27 	[MMI]       mov r8=-14
      2e6:	00 00 00 02 00 00 	            nop.m 0x0
      2ec:	00 00 04 00       	            nop.i 0x0;;
      2f0:	0b 58 20 1a 19 21 	[MMI]       adds r11=3208,r13;;
      2f6:	20 01 2c 20 20 00 	            ld4 r18=[r11]
      2fc:	00 00 04 00       	            nop.i 0x0;;
      300:	0b 88 fc 25 3f 23 	[MMI]       adds r17=-1,r18;;
      306:	00 88 2c 20 23 00 	            st4 [r11]=r17
      30c:	00 00 04 00       	            nop.i 0x0;;
      310:	11 00 00 00 01 00 	[MIB]       nop.m 0x0
      316:	00 00 00 02 00 80 	            nop.i 0x0
      31c:	08 00 84 00       	            br.ret.sptk.many b0;;

The lines
      2b0:	0a 00 00 00 22 00 	[MMI]       mf;;
      2b6:	80 00 00 00 42 00 	            mov r8=r0
      2bc:	00 00 04 00       	            nop.i 0x0
      2c0:	0b 00 20 40 2a 04 	[MMI]       mov.m ar.ccv=r8;;
      2c6:	10 1a 85 22 20 00 	            cmpxchg4.acq r33=[r33],r35,ar.ccv
      2cc:	00 00 04 00       	            nop.i 0x0;;
are the instructions of the assembly block.
The line
      2b6:	80 00 00 00 42 00 	            mov r8=r0
sets the r8 register to 0 and after that
      2c0:	0b 00 20 40 2a 04 	[MMI]       mov.m ar.ccv=r8;;
prepares the 'oldvalue' for the cmpxchg but it takes it from r8. This
is wrong.
What happened here is what I explained above: An input register is
overwritten which is still needed.
The register operand constraints in futex.h are wrong.

(The problem doesn't occur when the Kernel is compiled with GCC 4.6.)

The attached patch fixes the register operand constraints in futex.h.
The code after patching of it:

static inline int
futex_atomic_cmpxchg_inatomic(u32 *uval, u32 __user *uaddr,
			      u32 oldval, u32 newval)
{
	if (!access_ok(VERIFY_WRITE, uaddr, sizeof(u32)))
		return -EFAULT;

	{
		register unsigned long r8 __asm ("r8") = 0;
		unsigned long prev;
		__asm__ __volatile__(
			"	mf;;					\n"
			"	mov ar.ccv=%4;;				\n"
			"[1:]	cmpxchg4.acq %1=[%2],%3,ar.ccv		\n"
			"	.xdata4 \"__ex_table\", 1b-., 2f-.	\n"
			"[2:]"
			: "+r" (r8), "=&r" (prev)
			: "r" (uaddr), "r" (newval),
			  "rO" ((long) (unsigned) oldval)
			: "memory");
		*uval = prev;
		return r8;
	}
}

I also initialized the 'r8' var with the C programming language.
The _asm qualifier on the definition of the 'r8' var forces GCC to use
the r8 processor register for it.
I don't believe that we should use inline assembly for zeroing out a
local variable.
The constraint is
"+r" (r8)
what means that it is both an input register and an output register.
Note that the page fault handler will modify the r8 register which
will be the return value of the function.
The real fix is
"=&r" (prev)
The & means that GCC must not use any of the input registers to place
this output register in.

Patched the Kernel 3.2.23 and compiled it with GCC4.4:

0000000000000230 <cmpxchg_futex_value_locked>:
      230:	0b 18 80 1b 18 21 	[MMI]       adds r3=3168,r13;;
      236:	80 40 0d 00 42 00 	            adds r8=40,r3
      23c:	00 00 04 00       	            nop.i 0x0;;
      240:	0b 50 00 10 10 10 	[MMI]       ld4 r10=[r8];;
      246:	90 08 28 00 42 00 	            adds r9=1,r10
      24c:	00 00 04 00       	            nop.i 0x0;;
      250:	09 00 00 00 01 00 	[MMI]       nop.m 0x0
      256:	00 48 20 20 23 00 	            st4 [r8]=r9
      25c:	00 00 04 00       	            nop.i 0x0;;
      260:	08 10 80 06 00 21 	[MMI]       adds r2=32,r3
      266:	20 12 01 10 40 00 	            addp4 r34=r34,r0
      26c:	02 08 f1 52       	            extr.u r16=r33,0,61
      270:	05 40 00 00 00 e1 	[MLX]       mov r8=r0
      276:	ff ff 0f 00 00 e0 	            movl r15=0xfffffffbfff;;
      27c:	f1 f7 ff 65
      280:	09 70 00 04 18 10 	[MMI]       ld8 r14=[r2]
      286:	00 00 00 02 00 c0 	            nop.m 0x0
      28c:	f0 80 1c d0       	            cmp.ltu p6,p7=r15,r16;;
      290:	08 40 fc 1d 09 3b 	[MMI]       cmp.eq p8,p9=-1,r14
      296:	00 00 00 02 00 40 	            nop.m 0x0
      29c:	e1 08 2d d0       	            cmp.ltu p10,p11=r14,r33
      2a0:	56 01 10 00 40 10 	[BBB] (p10) br.cond.spnt.few 2e0
<cmpxchg_futex_value_locked+0xb0>
      2a6:	02 08 00 80 21 03 	      (p08) br.cond.dpnt.few 2b0
<cmpxchg_futex_value_locked+0x80>
      2ac:	40 00 00 41       	      (p06) br.cond.spnt.few 2e0
<cmpxchg_futex_value_locked+0xb0>
      2b0:	0b 00 00 00 22 00 	[MMI]       mf;;
      2b6:	00 10 81 54 08 00 	            mov.m ar.ccv=r34
      2bc:	00 00 04 00       	            nop.i 0x0;;
      2c0:	09 58 8c 42 11 10 	[MMI]       cmpxchg4.acq r11=[r33],r35,ar.ccv
      2c6:	00 00 00 02 00 00 	            nop.m 0x0
      2cc:	00 00 04 00       	            nop.i 0x0;;
      2d0:	10 00 2c 40 90 11 	[MIB]       st4 [r32]=r11
      2d6:	00 00 00 02 00 00 	            nop.i 0x0
      2dc:	20 00 00 40       	            br.few 2f0
<cmpxchg_futex_value_locked+0xc0>
      2e0:	09 40 c8 f9 ff 27 	[MMI]       mov r8=-14
      2e6:	00 00 00 02 00 00 	            nop.m 0x0
      2ec:	00 00 04 00       	            nop.i 0x0;;
      2f0:	0b 88 20 1a 19 21 	[MMI]       adds r17=3208,r13;;
      2f6:	30 01 44 20 20 00 	            ld4 r19=[r17]
      2fc:	00 00 04 00       	            nop.i 0x0;;
      300:	0b 90 fc 27 3f 23 	[MMI]       adds r18=-1,r19;;
      306:	00 90 44 20 23 00 	            st4 [r17]=r18
      30c:	00 00 04 00       	            nop.i 0x0;;
      310:	11 00 00 00 01 00 	[MIB]       nop.m 0x0
      316:	00 00 00 02 00 80 	            nop.i 0x0
      31c:	08 00 84 00       	            br.ret.sptk.many b0;;

Much better.
There is a
      270:	05 40 00 00 00 e1 	[MLX]       mov r8=r0
which was generated by C code r8 = 0. Below
      2b6:	00 10 81 54 08 00 	            mov.m ar.ccv=r34
what means that oldval is no longer overwritten.

This is Debian bug#702641
(http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=702641).

The patch is applicable on Kernel 3.9-rc1, 3.2.23 and many other versions.

Signed-off-by: Stephan Schreiber <info@fs-driver.org>
Signed-off-by: Tony Luck <tony.luck@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 arch/ia64/include/asm/futex.h |    5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

--- a/arch/ia64/include/asm/futex.h
+++ b/arch/ia64/include/asm/futex.h
@@ -106,16 +106,15 @@ futex_atomic_cmpxchg_inatomic(u32 *uval,
 		return -EFAULT;
 
 	{
-		register unsigned long r8 __asm ("r8");
+		register unsigned long r8 __asm ("r8") = 0;
 		unsigned long prev;
 		__asm__ __volatile__(
 			"	mf;;					\n"
-			"	mov %0=r0				\n"
 			"	mov ar.ccv=%4;;				\n"
 			"[1:]	cmpxchg4.acq %1=[%2],%3,ar.ccv		\n"
 			"	.xdata4 \"__ex_table\", 1b-., 2f-.	\n"
 			"[2:]"
-			: "=r" (r8), "=r" (prev)
+			: "+r" (r8), "=&r" (prev)
 			: "r" (uaddr), "r" (newval),
 			  "rO" ((long) (unsigned) oldval)
 			: "memory");



  parent reply	other threads:[~2013-05-06 21:04 UTC|newest]

Thread overview: 119+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-05-06 20:43 [ 000/115] 3.9.1-stable review Greg Kroah-Hartman
2013-05-06 20:43 ` [ 001/115] USB: serial: option: Added support Olivetti Olicard 145 Greg Kroah-Hartman
2013-05-06 20:43 ` [ 002/115] USB: option: add a D-Link DWM-156 variant Greg Kroah-Hartman
2013-05-06 20:43 ` [ 003/115] staging: zsmalloc: Fix link error on ARM Greg Kroah-Hartman
2013-05-06 20:44 ` [ 004/115] ARM: omap3: cpuidle: enable time keeping Greg Kroah-Hartman
2013-05-06 20:44 ` [ 005/115] ARM: u300: fix ages old copy/paste bug Greg Kroah-Hartman
2013-05-06 20:44 ` [ 006/115] ARM: at91/at91sam9260.dtsi: fix u(s)art pinctrl encoding Greg Kroah-Hartman
2013-05-06 20:44 ` [ 007/115] ARM: at91: remove partial parameter in bootargs for at91sam9x5ek.dtsi Greg Kroah-Hartman
2013-05-06 20:44 ` [ 008/115] ARM: at91: Fix typo in restart code panic message Greg Kroah-Hartman
2013-05-06 20:44 ` [ 009/115] ARM: at91/trivial: fix model name for SAM9G15-EK Greg Kroah-Hartman
2013-05-06 20:44 ` [ 010/115] ARM: at91/trivial: typos in compatible property Greg Kroah-Hartman
2013-05-06 20:44 ` [ 011/115] powerpc: Add isync to copy_and_flush Greg Kroah-Hartman
2013-05-06 20:44 ` [ 012/115] powerpc: Fix hardware IRQs with MMU on exceptions when HV=0 Greg Kroah-Hartman
2013-05-06 20:44 ` [ 013/115] powerpc/power8: Fix secondary CPUs hanging on boot for HV=0 Greg Kroah-Hartman
2013-05-06 20:44 ` [ 014/115] powerpc/spufs: Initialise inode->i_ino in spufs_new_inode() Greg Kroah-Hartman
2013-05-06 20:44 ` [ 015/115] iwlwifi: fix freeing uninitialized pointer Greg Kroah-Hartman
2013-05-06 20:44 ` [ 016/115] iwlwifi: dvm: dont send zeroed LQ cmd Greg Kroah-Hartman
2013-05-06 20:44 ` [ 017/115] mwifiex: Use pci_release_region() instead of a pci_release_regions() Greg Kroah-Hartman
2013-05-06 20:44 ` [ 018/115] mwifiex: Call pci_release_region after calling pci_disable_device Greg Kroah-Hartman
2013-05-06 20:44 ` [ 019/115] mac80211: fix station entry leak/warning while suspending Greg Kroah-Hartman
2013-05-06 20:44 ` [ 020/115] mac80211: use synchronize_rcu() with rcu_barrier() Greg Kroah-Hartman
2013-05-06 20:44 ` [ 021/115] usb/misc/appledisplay: Add 24" LED Cinema display Greg Kroah-Hartman
2013-05-06 20:44 ` [ 022/115] USB: add ftdi_sio USB ID for GDM Boost V1.x Greg Kroah-Hartman
2013-05-06 20:44 ` [ 023/115] USB: ftdi_sio: correct ST Micro Connect Lite PIDs Greg Kroah-Hartman
2013-05-06 20:44 ` [ 024/115] USB: ftdi_sio: enable two UART ports on ST Microconnect Lite Greg Kroah-Hartman
2013-05-06 20:44 ` [ 025/115] USB: io_ti: fix TIOCGSERIAL Greg Kroah-Hartman
2013-05-06 20:44 ` [ 026/115] usbfs: Always allow ctrl requests with USB_RECIP_ENDPOINT on the ctrl ep Greg Kroah-Hartman
2013-05-06 20:44 ` [ 027/115] usb: chipidea: udc: fix memory access of shared memory on armv5 machines Greg Kroah-Hartman
2013-05-06 20:44 ` [ 028/115] usb: chipidea: udc: fix memory leak in _ep_nuke Greg Kroah-Hartman
2013-05-06 20:44 ` [ 029/115] usb: remove redundant tdi_reset Greg Kroah-Hartman
2013-05-06 20:44 ` [ 030/115] usb-storage: CY7C68300A chips do not support Cypress ATACB Greg Kroah-Hartman
2013-05-06 20:44 ` [ 031/115] s390/memory hotplug: prevent offline of active memory increments Greg Kroah-Hartman
2013-05-06 20:44 ` [ 032/115] xen/time: Fix kasprintf splat when allocating timer%d IRQ line Greg Kroah-Hartman
2013-05-06 20:44 ` [ 033/115] xen/smp: Fix leakage of timer interrupt line for every CPU online/offline Greg Kroah-Hartman
2013-05-06 20:44 ` [ 034/115] xen/smp/spinlock: Fix leakage of the spinlock " Greg Kroah-Hartman
2013-05-06 20:44 ` [ 035/115] serial_core.c: add put_device() after device_find_child() Greg Kroah-Hartman
2013-05-06 20:44 ` [ 036/115] arm: set the page table freeing ceiling to TASK_SIZE Greg Kroah-Hartman
2013-05-06 20:44 ` [ 037/115] gianfar: do not advertise any alarm capability Greg Kroah-Hartman
2013-05-06 20:44 ` [ 038/115] tty: fix up atime/mtime mess, take three Greg Kroah-Hartman
2013-05-06 20:44 ` [ 039/115] fbcon: when font is freed, clear also vc_font.data Greg Kroah-Hartman
2013-05-06 20:44 ` [ 040/115] tracing: Use stack of calling function for stack tracer Greg Kroah-Hartman
2013-05-06 20:44 ` [ 041/115] tracing: Fix stack tracer with fentry use Greg Kroah-Hartman
2013-05-06 20:44 ` [ 042/115] tracing: Remove most or all of stack tracer stack size from stack_max_size Greg Kroah-Hartman
2013-05-06 20:44 ` [ 043/115] tracing: Fix off-by-one on allocating stat->pages Greg Kroah-Hartman
2013-05-06 20:44 ` [ 044/115] tracing: Check return value of tracing_init_dentry() Greg Kroah-Hartman
2013-05-06 20:44 ` [ 045/115] tracing: Reset ftrace_graph_filter_enabled if count is zero Greg Kroah-Hartman
2013-05-06 20:44 ` [ 046/115] i2c: xiic: must always write 16-bit words to TX_FIFO Greg Kroah-Hartman
2013-05-06 20:44 ` [ 047/115] crypto: crc32-pclmul - Use gas macro for pclmulqdq Greg Kroah-Hartman
2013-05-06 20:44 ` [ 048/115] Drivers: hv: vmbus: Fix a bug in hv_need_to_signal() Greg Kroah-Hartman
2013-05-06 20:44 ` [ 049/115] sysfs: fix use after free in case of concurrent read/write and readdir Greg Kroah-Hartman
2013-05-06 20:44 ` [ 050/115] Fix initialization of CMCI/CMCP interrupts Greg Kroah-Hartman
2013-05-06 20:44 ` [ 051/115] PCI / ACPI: Dont query OSC support with all possible controls Greg Kroah-Hartman
2013-05-06 20:44 ` [ 052/115] PCI/PM: Fix fallback to PCI_D0 in pci_platform_power_transition() Greg Kroah-Hartman
2013-05-06 20:44 ` [ 053/115] rt2x00: Fix transmit power troubles on some Ralink RT30xx cards Greg Kroah-Hartman
2013-05-06 20:44 ` Greg Kroah-Hartman [this message]
2013-05-06 20:44 ` [ 055/115] Wrong asm register contraints in the kvm implementation Greg Kroah-Hartman
2013-05-06 20:44 ` [ 056/115] fs/fscache/stats.c: fix memory leak Greg Kroah-Hartman
2013-05-06 20:44 ` [ 057/115] mm: allow arch code to control the user page table ceiling Greg Kroah-Hartman
2013-05-06 20:44 ` [ 058/115] TPM: Retry SaveState command in suspend path Greg Kroah-Hartman
2013-05-06 20:44 ` [ 059/115] ALSA: emu10k1: Fix dock firmware loading Greg Kroah-Hartman
2013-05-06 20:44 ` [ 060/115] ALSA: snd-usb: try harder to find USB_DT_CS_ENDPOINT Greg Kroah-Hartman
2013-05-06 20:44 ` [ 061/115] ALSA: usb: Add quirk for 192KHz recording on E-Mu devices Greg Kroah-Hartman
2013-05-06 20:44 ` [ 062/115] ALSA: usb-audio: disable autopm for MIDI devices Greg Kroah-Hartman
2013-05-06 20:44 ` [ 063/115] ALSA: usb-audio: Fix autopm error during probing Greg Kroah-Hartman
2013-05-06 20:45 ` [ 064/115] ALSA: USB: adjust for changed 3.8 USB API Greg Kroah-Hartman
2013-05-06 20:45 ` [ 065/115] ALSA: hda - Fix aamix activation with loopback control on VIA codecs Greg Kroah-Hartman
2013-05-06 20:45 ` [ 066/115] ALSA: hda - Add the support for ALC286 codec Greg Kroah-Hartman
2013-05-06 20:45 ` [ 067/115] ARM: 7702/1: Set the page table freeing ceiling to TASK_SIZE Greg Kroah-Hartman
2013-05-07  0:00   ` Hugh Dickins
2013-05-07 17:23     ` Greg Kroah-Hartman
2013-05-06 20:45 ` [ 068/115] ASoC: max98088: Fix logging of hardware revision Greg Kroah-Hartman
2013-05-06 20:45 ` [ 069/115] hrtimer: Fix ktime_add_ns() overflow on 32bit architectures Greg Kroah-Hartman
2013-05-06 20:45 ` [ 070/115] hrtimer: Add expiry time overflow check in hrtimer_interrupt Greg Kroah-Hartman
2013-05-06 20:45 ` [ 071/115] swap: redirty page if page write fails on swap file Greg Kroah-Hartman
2013-05-06 20:45 ` [ 072/115] mm: swap: mark swap pages writeback before queueing for direct IO Greg Kroah-Hartman
2013-05-06 20:45 ` [ 073/115] drivers/rtc/rtc-cmos.c: dont disable hpet emulation on suspend Greg Kroah-Hartman
2013-05-06 20:45 ` [ 074/115] drivers/rtc/rtc-at91rm9200.c: fix missing iounmap Greg Kroah-Hartman
2013-05-06 20:45 ` [ 075/115] libata: acpi: make ata_ap_acpi_handle not block Greg Kroah-Hartman
2013-05-06 20:45 ` [ 076/115] ACPI: Fix wrong parameter passed to memblock_reserve Greg Kroah-Hartman
2013-05-06 20:45 ` [ 077/115] ACPI / thermal: do not always return THERMAL_TREND_RAISING for active trip points Greg Kroah-Hartman
2013-05-06 20:45 ` [ 078/115] cgroup: fix an off-by-one bug which may trigger BUG_ON() Greg Kroah-Hartman
2013-05-06 20:45 ` [ 079/115] cgroup: fix broken file xattrs Greg Kroah-Hartman
2013-05-06 20:45 ` [ 080/115] localmodconfig: Process source kconfig files as they are found Greg Kroah-Hartman
2013-05-06 20:45 ` [ 081/115] clockevents: Set dummy handler on CPU_DEAD shutdown Greg Kroah-Hartman
2013-05-06 20:45 ` [ 082/115] sata_highbank: Rename proc_name to the module name Greg Kroah-Hartman
2013-05-06 20:45 ` [ 083/115] inotify: invalid mask should return a error number but not set it Greg Kroah-Hartman
2013-05-06 20:45 ` [ 084/115] fs/dcache.c: add cond_resched() to shrink_dcache_parent() Greg Kroah-Hartman
2013-05-06 20:45 ` [ 085/115] exec: do not abuse ->cred_guard_mutex in threadgroup_lock() Greg Kroah-Hartman
2013-05-06 20:45 ` [ 086/115] LOCKD: Ensure that nlmclnt_block resets block->b_status after a server reboot Greg Kroah-Hartman
2013-05-06 20:45 ` [ 087/115] md: bad block list should default to disabled Greg Kroah-Hartman
2013-05-06 20:45 ` [ 088/115] MD: ignore discard request for hard disks of hybid raid1/raid10 array Greg Kroah-Hartman
2013-05-06 20:45 ` [ 089/115] NFSv4: Handle NFS4ERR_DELAY and NFS4ERR_GRACE in nfs4_lock_delegation_recall Greg Kroah-Hartman
2013-05-06 20:45 ` [ 090/115] NFSv4: Handle NFS4ERR_DELAY and NFS4ERR_GRACE in nfs4_open_delegation_recall Greg Kroah-Hartman
2013-05-06 20:45 ` [ 091/115] nfsd4: dont close read-write opens too soon Greg Kroah-Hartman
2013-05-06 20:45 ` [ 092/115] nfsd: dont run get_file if nfs4_preprocess_stateid_op return error Greg Kroah-Hartman
2013-05-06 20:45 ` [ 093/115] nfsd: use kmem_cache_free() instead of kfree() Greg Kroah-Hartman
2013-05-06 20:45 ` [ 094/115] nfsd: Decode and send 64bit time values Greg Kroah-Hartman
2013-05-06 20:45 ` [ 095/115] wireless: regulatory: fix channel disabling race condition Greg Kroah-Hartman
2013-05-06 20:45 ` [ 096/115] ipc: sysv shared memory limited to 8TiB Greg Kroah-Hartman
2013-05-06 20:45 ` [ 097/115] ixgbe: fix EICR write in ixgbe_msix_other Greg Kroah-Hartman
2013-05-06 20:45 ` [ 098/115] e1000e: fix numeric overflow in phc settime method Greg Kroah-Hartman
2013-05-06 20:45 ` [ 099/115] x86-64, init: Do not set NX bits on non-NX capable hardware Greg Kroah-Hartman
2013-05-06 20:45 ` [ 100/115] ext4/jbd2: dont wait (forever) for stale tid caused by wraparound Greg Kroah-Hartman
2013-05-06 20:45 ` [ 101/115] jbd2: fix race between jbd2_journal_remove_checkpoint and ->j_commit_callback Greg Kroah-Hartman
2013-05-06 20:45 ` [ 102/115] ext4: fix journal callback list traversal Greg Kroah-Hartman
2013-05-06 20:45 ` [ 103/115] ext4: unregister es_shrinker if mount failed Greg Kroah-Hartman
2013-05-06 20:45 ` [ 104/115] ext4: fix big-endian bug in metadata checksum calculations Greg Kroah-Hartman
2013-05-06 20:45 ` [ 105/115] ext4: fix online resizing for ext3-compat file systems Greg Kroah-Hartman
2013-05-06 20:45 ` [ 106/115] ext4: fix Kconfig documentation for CONFIG_EXT4_DEBUG Greg Kroah-Hartman
2013-05-06 20:45 ` [ 107/115] do_mount(): fix a leak introduced in 3.9 ("mount: consolidate permission checks") Greg Kroah-Hartman
2013-05-06 20:45 ` [ 108/115] mmc: at91/avr32/atmel-mci: fix DMA-channel leak on module unload Greg Kroah-Hartman
2013-05-06 20:45 ` [ 109/115] Give the OID registry file module info to avoid kernel tainting Greg Kroah-Hartman
2013-05-06 20:45 ` [ 110/115] KVM: X86 emulator: fix source operand decoding for 8bit mov[zs]x instructions Greg Kroah-Hartman
2013-05-06 20:45 ` [ 111/115] x86: Eliminate irq_mis_count counted in arch_irq_stat Greg Kroah-Hartman
2013-05-06 20:45 ` [ 112/115] mmc: core: Fix bit width test failing on old eMMC cards Greg Kroah-Hartman
2013-05-06 20:45 ` [ 113/115] mmc: atmel-mci: pio hang on block errors Greg Kroah-Hartman
2013-05-06 20:45 ` [ 114/115] rcutrace: single_open() leaks Greg Kroah-Hartman
2013-05-06 20:45 ` [ 115/115] mfd: adp5520: Restore mode bits on resume Greg Kroah-Hartman
     [not found] ` <CAKocOOOcpAeLo=K5usRnk2w5S4tXx2Y4rXe9bff=2ba=ZWdDJA@mail.gmail.com>
2013-05-07 19:11   ` Fwd: [ 000/115] 3.9.1-stable review Shuah Khan

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=20130506203101.110885950@linuxfoundation.org \
    --to=gregkh@linuxfoundation.org \
    --cc=info@fs-driver.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=stable@vger.kernel.org \
    --cc=tony.luck@intel.com \
    /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