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, Filipe Manana <fdmanana@suse.com>
Subject: [PATCH 4.4 025/137] Btrfs: fix invalid page accesses in extent_same (dedup) ioctl
Date: Tue, 23 Feb 2016 19:32:36 -0800	[thread overview]
Message-ID: <20160224033418.117984503@linuxfoundation.org> (raw)
In-Reply-To: <20160224033417.270530882@linuxfoundation.org>

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

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

From: Filipe Manana <fdmanana@suse.com>

commit e0bd70c67bf996b360f706b6c643000f2e384681 upstream.

In the extent_same ioctl we are getting the pages for the source and
target ranges and unlocking them immediately after, which is incorrect
because later we attempt to map them (with kmap_atomic) and access their
contents at btrfs_cmp_data(). When we do such access the pages might have
been relocated or removed from memory, which leads to an invalid memory
access. This issue is detected on a kernel with CONFIG_DEBUG_PAGEALLOC=y
which produces a trace like the following:

186736.677437] general protection fault: 0000 [#1] PREEMPT SMP DEBUG_PAGEALLOC
[186736.680382] Modules linked in: btrfs dm_flakey dm_mod ppdev xor raid6_pq sha256_generic hmac drbg ansi_cprng acpi_cpufreq evdev sg aesni_intel aes_x86_64
parport_pc ablk_helper tpm_tis psmouse parport i2c_piix4 tpm cryptd i2c_core lrw processor button serio_raw pcspkr gf128mul glue_helper loop autofs4 ext4
crc16 mbcache jbd2 sd_mod sr_mod cdrom ata_generic virtio_scsi ata_piix libata virtio_pci virtio_ring crc32c_intel scsi_mod e1000 virtio floppy [last
unloaded: btrfs]
[186736.681319] CPU: 13 PID: 10222 Comm: duperemove Tainted: G        W       4.4.0-rc6-btrfs-next-18+ #1
[186736.681319] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS by qemu-project.org 04/01/2014
[186736.681319] task: ffff880132600400 ti: ffff880362284000 task.ti: ffff880362284000
[186736.681319] RIP: 0010:[<ffffffff81264d00>]  [<ffffffff81264d00>] memcmp+0xb/0x22
[186736.681319] RSP: 0018:ffff880362287d70  EFLAGS: 00010287
[186736.681319] RAX: 000002c002468acf RBX: 0000000012345678 RCX: 0000000000000000
[186736.681319] RDX: 0000000000001000 RSI: 0005d129c5cf9000 RDI: 0005d129c5cf9000
[186736.681319] RBP: ffff880362287d70 R08: 0000000000000000 R09: 0000000000001000
[186736.681319] R10: ffff880000000000 R11: 0000000000000476 R12: 0000000000001000
[186736.681319] R13: ffff8802f91d4c88 R14: ffff8801f2a77830 R15: ffff880352e83e40
[186736.681319] FS:  00007f27b37fe700(0000) GS:ffff88043dda0000(0000) knlGS:0000000000000000
[186736.681319] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[186736.681319] CR2: 00007f27a406a000 CR3: 0000000217421000 CR4: 00000000001406e0
[186736.681319] Stack:
[186736.681319]  ffff880362287ea0 ffffffffa048d0bd 000000000009f000 0000000000001000
[186736.681319]  0100000000000000 ffff8801f2a77850 ffff8802f91d49b0 ffff880132600400
[186736.681319]  00000000000004f8 ffff8801c1efbe41 0000000000000000 0000000000000038
[186736.681319] Call Trace:
[186736.681319]  [<ffffffffa048d0bd>] btrfs_ioctl+0x24cb/0x2731 [btrfs]
[186736.681319]  [<ffffffff8108a8b0>] ? arch_local_irq_save+0x9/0xc
[186736.681319]  [<ffffffff8118b3d4>] ? rcu_read_unlock+0x3e/0x5d
[186736.681319]  [<ffffffff811822f8>] do_vfs_ioctl+0x42b/0x4ea
[186736.681319]  [<ffffffff8118b4f3>] ? __fget_light+0x62/0x71
[186736.681319]  [<ffffffff8118240e>] SyS_ioctl+0x57/0x79
[186736.681319]  [<ffffffff814872d7>] entry_SYSCALL_64_fastpath+0x12/0x6f
[186736.681319] Code: 0a 3c 6e 74 0d 3c 79 74 04 3c 59 75 0c c6 06 01 eb 03 c6 06 00 31 c0 eb 05 b8 ea ff ff ff 5d c3 55 31 c9 48 89 e5 48 39 d1 74 13 <0f> b6
04 0f 44 0f b6 04 0e 48 ff c1 44 29 c0 74 ea eb 02 31 c0

(gdb) list *(btrfs_ioctl+0x24cb)
0x5e0e1 is in btrfs_ioctl (fs/btrfs/ioctl.c:2972).
2967                    dst_addr = kmap_atomic(dst_page);
2968
2969                    flush_dcache_page(src_page);
2970                    flush_dcache_page(dst_page);
2971
2972                    if (memcmp(addr, dst_addr, cmp_len))
2973                            ret = BTRFS_SAME_DATA_DIFFERS;
2974
2975                    kunmap_atomic(addr);
2976                    kunmap_atomic(dst_addr);

So fix this by making sure we keep the pages locked and respect the same
locking order as everywhere else: get and lock the pages first and then
lock the range in the inode's io tree (like for example at
__btrfs_buffered_write() and extent_readpages()). If an ordered extent
is found after locking the range in the io tree, unlock the range,
unlock the pages, wait for the ordered extent to complete and repeat the
entire locking process until no overlapping ordered extents are found.

Signed-off-by: Filipe Manana <fdmanana@suse.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 fs/btrfs/ioctl.c |   90 ++++++++++++++++++++++++++++++++++++++++++++++---------
 1 file changed, 76 insertions(+), 14 deletions(-)

--- a/fs/btrfs/ioctl.c
+++ b/fs/btrfs/ioctl.c
@@ -2799,7 +2799,6 @@ static struct page *extent_same_get_page
 			return NULL;
 		}
 	}
-	unlock_page(page);
 
 	return page;
 }
@@ -2818,10 +2817,17 @@ static int gather_extent_pages(struct in
 	return 0;
 }
 
-static inline void lock_extent_range(struct inode *inode, u64 off, u64 len)
+static int lock_extent_range(struct inode *inode, u64 off, u64 len,
+			     bool retry_range_locking)
 {
-	/* do any pending delalloc/csum calc on src, one way or
-	   another, and lock file content */
+	/*
+	 * Do any pending delalloc/csum calculations on inode, one way or
+	 * another, and lock file content.
+	 * The locking order is:
+	 *
+	 *   1) pages
+	 *   2) range in the inode's io tree
+	 */
 	while (1) {
 		struct btrfs_ordered_extent *ordered;
 		lock_extent(&BTRFS_I(inode)->io_tree, off, off + len - 1);
@@ -2839,8 +2845,11 @@ static inline void lock_extent_range(str
 		unlock_extent(&BTRFS_I(inode)->io_tree, off, off + len - 1);
 		if (ordered)
 			btrfs_put_ordered_extent(ordered);
+		if (!retry_range_locking)
+			return -EAGAIN;
 		btrfs_wait_ordered_range(inode, off, len);
 	}
+	return 0;
 }
 
 static void btrfs_double_inode_unlock(struct inode *inode1, struct inode *inode2)
@@ -2865,15 +2874,24 @@ static void btrfs_double_extent_unlock(s
 	unlock_extent(&BTRFS_I(inode2)->io_tree, loff2, loff2 + len - 1);
 }
 
-static void btrfs_double_extent_lock(struct inode *inode1, u64 loff1,
-				     struct inode *inode2, u64 loff2, u64 len)
+static int btrfs_double_extent_lock(struct inode *inode1, u64 loff1,
+				    struct inode *inode2, u64 loff2, u64 len,
+				    bool retry_range_locking)
 {
+	int ret;
+
 	if (inode1 < inode2) {
 		swap(inode1, inode2);
 		swap(loff1, loff2);
 	}
-	lock_extent_range(inode1, loff1, len);
-	lock_extent_range(inode2, loff2, len);
+	ret = lock_extent_range(inode1, loff1, len, retry_range_locking);
+	if (ret)
+		return ret;
+	ret = lock_extent_range(inode2, loff2, len, retry_range_locking);
+	if (ret)
+		unlock_extent(&BTRFS_I(inode1)->io_tree, loff1,
+			      loff1 + len - 1);
+	return ret;
 }
 
 struct cmp_pages {
@@ -2889,11 +2907,15 @@ static void btrfs_cmp_data_free(struct c
 
 	for (i = 0; i < cmp->num_pages; i++) {
 		pg = cmp->src_pages[i];
-		if (pg)
+		if (pg) {
+			unlock_page(pg);
 			page_cache_release(pg);
+		}
 		pg = cmp->dst_pages[i];
-		if (pg)
+		if (pg) {
+			unlock_page(pg);
 			page_cache_release(pg);
+		}
 	}
 	kfree(cmp->src_pages);
 	kfree(cmp->dst_pages);
@@ -2954,6 +2976,8 @@ static int btrfs_cmp_data(struct inode *
 
 		src_page = cmp->src_pages[i];
 		dst_page = cmp->dst_pages[i];
+		ASSERT(PageLocked(src_page));
+		ASSERT(PageLocked(dst_page));
 
 		addr = kmap_atomic(src_page);
 		dst_addr = kmap_atomic(dst_page);
@@ -3066,14 +3090,46 @@ static int btrfs_extent_same(struct inod
 		goto out_unlock;
 	}
 
+again:
 	ret = btrfs_cmp_data_prepare(src, loff, dst, dst_loff, olen, &cmp);
 	if (ret)
 		goto out_unlock;
 
 	if (same_inode)
-		lock_extent_range(src, same_lock_start, same_lock_len);
+		ret = lock_extent_range(src, same_lock_start, same_lock_len,
+					false);
 	else
-		btrfs_double_extent_lock(src, loff, dst, dst_loff, len);
+		ret = btrfs_double_extent_lock(src, loff, dst, dst_loff, len,
+					       false);
+	/*
+	 * If one of the inodes has dirty pages in the respective range or
+	 * ordered extents, we need to flush dellaloc and wait for all ordered
+	 * extents in the range. We must unlock the pages and the ranges in the
+	 * io trees to avoid deadlocks when flushing delalloc (requires locking
+	 * pages) and when waiting for ordered extents to complete (they require
+	 * range locking).
+	 */
+	if (ret == -EAGAIN) {
+		/*
+		 * Ranges in the io trees already unlocked. Now unlock all
+		 * pages before waiting for all IO to complete.
+		 */
+		btrfs_cmp_data_free(&cmp);
+		if (same_inode) {
+			btrfs_wait_ordered_range(src, same_lock_start,
+						 same_lock_len);
+		} else {
+			btrfs_wait_ordered_range(src, loff, len);
+			btrfs_wait_ordered_range(dst, dst_loff, len);
+		}
+		goto again;
+	}
+	ASSERT(ret == 0);
+	if (WARN_ON(ret)) {
+		/* ranges in the io trees already unlocked */
+		btrfs_cmp_data_free(&cmp);
+		return ret;
+	}
 
 	/* pass original length for comparison so we stay within i_size */
 	ret = btrfs_cmp_data(src, loff, dst, dst_loff, olen, &cmp);
@@ -3895,9 +3951,15 @@ static noinline long btrfs_ioctl_clone(s
 		u64 lock_start = min_t(u64, off, destoff);
 		u64 lock_len = max_t(u64, off, destoff) + len - lock_start;
 
-		lock_extent_range(src, lock_start, lock_len);
+		ret = lock_extent_range(src, lock_start, lock_len, true);
 	} else {
-		btrfs_double_extent_lock(src, off, inode, destoff, len);
+		ret = btrfs_double_extent_lock(src, off, inode, destoff, len,
+					       true);
+	}
+	ASSERT(ret == 0);
+	if (WARN_ON(ret)) {
+		/* ranges in the io trees already unlocked */
+		goto out_unlock;
 	}
 
 	ret = btrfs_clone(src, inode, off, olen, len, destoff, 0);

  parent reply	other threads:[~2016-02-24  4:07 UTC|newest]

Thread overview: 139+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-02-24  3:32 [PATCH 4.4 000/137] 4.4.3-stable review Greg Kroah-Hartman
2016-02-24  3:32 ` [PATCH 4.4 001/137] x86/mm: Fix types used in pgprot cacheability flags translations Greg Kroah-Hartman
2016-02-24  3:32 ` [PATCH 4.4 003/137] x86/uaccess/64: Make the __copy_user_nocache() assembly code more readable Greg Kroah-Hartman
2016-02-24  3:32 ` [PATCH 4.4 004/137] x86/uaccess/64: Handle the caching of 4-byte nocache copies properly in __copy_user_nocache() Greg Kroah-Hartman
2016-02-24  3:32 ` [PATCH 4.4 005/137] x86/mm: Fix vmalloc_fault() to handle large pages properly Greg Kroah-Hartman
2016-02-24  3:32 ` [PATCH 4.4 006/137] ALSA: hda - Cancel probe work instead of flush at remove Greg Kroah-Hartman
2016-02-24  3:32 ` [PATCH 4.4 007/137] ALSA: pcm: Fix rwsem deadlock for non-atomic PCM stream Greg Kroah-Hartman
2016-02-24  3:32 ` [PATCH 4.4 008/137] ALSA: seq: Fix leak of pool buffer at concurrent writes Greg Kroah-Hartman
2016-02-24  3:32 ` [PATCH 4.4 009/137] ALSA: seq: Fix double port list deletion Greg Kroah-Hartman
2016-02-24  3:32 ` [PATCH 4.4 010/137] phy: twl4030-usb: Relase usb phy on unload Greg Kroah-Hartman
2016-02-24  3:32 ` [PATCH 4.4 011/137] phy: twl4030-usb: Fix unbalanced pm_runtime_enable on module reload Greg Kroah-Hartman
2016-02-24  3:32 ` [PATCH 4.4 012/137] staging/speakup: Use tty_ldisc_ref() for paste kworker Greg Kroah-Hartman
2016-02-24  3:32 ` [PATCH 4.4 013/137] pty: fix possible use after free of tty->driver_data Greg Kroah-Hartman
2016-02-24  3:32 ` [PATCH 4.4 014/137] pty: make sure super_block is still valid in final /dev/tty close Greg Kroah-Hartman
2016-02-24  3:32 ` [PATCH 4.4 015/137] tty: Add support for PCIe WCH382 2S multi-IO card Greg Kroah-Hartman
2016-02-24  3:32 ` [PATCH 4.4 016/137] serial: 8250_pci: Add Intel Broadwell ports Greg Kroah-Hartman
2016-02-24  3:32 ` [PATCH 4.4 017/137] serial: omap: Prevent DoS using unprivileged ioctl(TIOCSRS485) Greg Kroah-Hartman
2016-02-24  3:32 ` [PATCH 4.4 018/137] ext4: fix scheduling in atomic on group checksum failure Greg Kroah-Hartman
2016-02-24  3:32 ` [PATCH 4.4 019/137] ext4: fix potential integer overflow Greg Kroah-Hartman
2016-02-24  3:32 ` [PATCH 4.4 020/137] ext4: dont read blocks from disk after extents being swapped Greg Kroah-Hartman
2016-02-24  3:32 ` [PATCH 4.4 021/137] btrfs: handle invalid num_stripes in sys_array Greg Kroah-Hartman
2016-02-24  3:32 ` [PATCH 4.4 022/137] Btrfs: fix fitrim discarding device area reserved for boot loaders use Greg Kroah-Hartman
2016-02-24  3:32 ` [PATCH 4.4 023/137] Revert "btrfs: clear PF_NOFREEZE in cleaner_kthread()" Greg Kroah-Hartman
2016-02-24  3:32 ` Greg Kroah-Hartman [this message]
2016-02-24  3:32 ` [PATCH 4.4 026/137] Btrfs: fix page reading in extent_same ioctl leading to csum errors Greg Kroah-Hartman
2016-02-24  3:32 ` [PATCH 4.4 027/137] Btrfs: fix hang on extent buffer lock caused by the inode_paths ioctl Greg Kroah-Hartman
2016-02-24  3:32 ` [PATCH 4.4 028/137] Btrfs: fix direct IO requests not reporting IO error to user space Greg Kroah-Hartman
2016-02-24  3:32 ` [PATCH 4.4 029/137] ptrace: use fsuid, fsgid, effective creds for fs access checks Greg Kroah-Hartman
2016-02-24  3:32 ` [PATCH 4.4 030/137] tools lib traceevent: Fix output of %llu for 64 bit values read on 32 bit machines Greg Kroah-Hartman
2016-02-24  3:32 ` [PATCH 4.4 031/137] perf tools: tracepoint_error() can receive e=NULL, robustify it Greg Kroah-Hartman
2016-02-24  3:32 ` [PATCH 4.4 032/137] tracing: Fix freak link error caused by branch tracer Greg Kroah-Hartman
2016-02-24  3:32 ` [PATCH 4.4 033/137] tracepoints: Do not trace when cpu is offline Greg Kroah-Hartman
2016-02-24  3:32 ` [PATCH 4.4 034/137] klist: fix starting point removed bug in klist iterators Greg Kroah-Hartman
2016-02-24  3:32 ` [PATCH 4.4 035/137] scsi: add Synology to 1024 sector blacklist Greg Kroah-Hartman
2016-02-24  3:32 ` [PATCH 4.4 036/137] iscsi-target: Fix potential dead-lock during node acl delete Greg Kroah-Hartman
2016-02-24  3:32 ` [PATCH 4.4 037/137] SCSI: fix crashes in sd and sr runtime PM Greg Kroah-Hartman
2016-02-24  3:32 ` [PATCH 4.4 038/137] drivers/scsi/sg.c: mark VMA as VM_IO to prevent migration Greg Kroah-Hartman
2016-02-24  3:32 ` [PATCH 4.4 039/137] scsi_dh_rdac: always retry MODE SELECT on command lock violation Greg Kroah-Hartman
2016-02-24  3:32 ` [PATCH 4.4 040/137] SCSI: Add Marvell Console to VPD blacklist Greg Kroah-Hartman
2016-02-24  3:32 ` [PATCH 4.4 041/137] scsi: fix soft lockup in scsi_remove_target() on module removal Greg Kroah-Hartman
2016-02-24  3:32 ` [PATCH 4.4 042/137] iio: adis_buffer: Fix out-of-bounds memory access Greg Kroah-Hartman
2016-02-24  3:32 ` [PATCH 4.4 043/137] iio:adc:ti_am335x_adc Fix buffered mode by identifying as software buffer Greg Kroah-Hartman
2016-02-24  3:32 ` [PATCH 4.4 044/137] iio-light: Use a signed return type for ltr501_match_samp_freq() Greg Kroah-Hartman
2016-02-24  3:32 ` [PATCH 4.4 045/137] iio: add HAS_IOMEM dependency to VF610_ADC Greg Kroah-Hartman
2016-02-24  3:32 ` [PATCH 4.4 047/137] iio: dac: mcp4725: set iio name property in sysfs Greg Kroah-Hartman
2016-02-24  3:32 ` [PATCH 4.4 048/137] iio: light: acpi-als: Report data as processed Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 049/137] iio: pressure: mpl115: fix temperature offset sign Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 050/137] iio: inkern: fix a NULL dereference on error Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 051/137] cifs: Ratelimit kernel log messages Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 052/137] cifs: fix race between call_async() and reconnect() Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 053/137] cifs_dbg() outputs an uninitialized buffer in cifs_readdir() Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 054/137] cifs: fix erroneous return value Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 055/137] NFS: Fix attribute cache revalidation Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 056/137] pNFS/flexfiles: Fix an Oopsable typo in ff_mirror_match_fh() Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 057/137] nfs: Fix race in __update_open_stateid() Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 058/137] pNFS/flexfiles: Fix an XDR encoding bug in layoutreturn Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 059/137] udf: limit the maximum number of indirect extents in a row Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 060/137] udf: Prevent buffer overrun with multi-byte characters Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 061/137] udf: Check output buffer length when converting name to CS0 Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 062/137] SUNRPC: Fixup socket wait for memory Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 063/137] powerpc/eeh: Fix PE location code Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 064/137] powerpc: Simplify module TOC handling Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 065/137] powerpc: Fix dedotify for binutils >= 2.26 Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 066/137] powerpc/eeh: Fix stale cached primary bus Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 067/137] powerpc/powernv: Fix stale PE " Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 068/137] powerpc/ioda: Set "read" permission when "write" is set Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 069/137] ARM: mvebu: remove duplicated regulator definition in Armada 388 GP Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 071/137] ARM: 8519/1: ICST: try other dividends than 1 Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 072/137] ARM: 8517/1: ICST: avoid arithmetic overflow in icst_hz() Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 073/137] ARM: nomadik: fix up SD/MMC DT settings Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 074/137] ARM: dts: Fix wl12xx missing clocks that cause hangs Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 075/137] ARM: dts: Fix omap5 PMIC control lines for RTC writes Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 076/137] ARM: dts: omap5-board-common: enable rtc and charging of backup battery Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 077/137] ARM: dts: at91: sama5d4 xplained: properly mux phy interrupt Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 078/137] ARM: dts: at91: sama5d4: fix instance id of DBGU Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 079/137] ARM: dts: at91: sama5d4 xplained: fix phy0 IRQ type Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 080/137] ARM: dts: at91: sama5d4ek: add phy address and IRQ for macb0 Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 081/137] ARM: OMAP2+: Fix wait_dll_lock_timed for rodata Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 082/137] ARM: OMAP2+: Fix l2_inv_api_params " Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 083/137] ARM: OMAP2+: Fix l2dis_3630 " Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 084/137] ARM: OMAP2+: Fix save_secure_ram_context " Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 085/137] ARM: OMAP2+: Fix ppa_zero_params and ppa_por_params " Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 086/137] arm64: dma-mapping: fix handling of devices registered before arch_initcall Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 087/137] KVM: arm/arm64: Fix reference to uninitialised VGIC Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 088/137] KVM: PPC: Fix emulation of H_SET_DABR/X on POWER8 Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 089/137] KVM: PPC: Fix ONE_REG AltiVec support Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 090/137] perf kvm record/report: unprocessable sample error while recording/reporting guest data Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 091/137] mm: soft-offline: check return value in second __get_any_page() call Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 092/137] libnvdimm: fix namespace object confusion in is_uuid_busy() Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 093/137] mm: fix mlock accouting Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 094/137] mm: replace vma_lock_anon_vma with anon_vma_lock_read/write Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 095/137] mm: fix regression in remap_file_pages() emulation Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 096/137] Input: elantech - mark protocols v2 and v3 as semi-mt Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 098/137] string_helpers: fix precision loss for some inputs Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 099/137] Input: vmmouse - fix absolute device registration Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 100/137] iommu/vt-d: Dont skip PCI devices when disabling IOTLB Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 101/137] iommu/amd: Correct the wrong setting of alias DTE in do_attach Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 103/137] iommu/vt-d: Fix 64-bit accesses to 32-bit DMAR_GSTS_REG Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 104/137] iommu/vt-d: Clear PPR bit to ensure we get more page request interrupts Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 105/137] Revert "xhci: dont finish a TD if we get a short-transfer event mid TD" Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 106/137] xhci: Fix list corruption in urb dequeue at host removal Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 107/137] m32r: fix m32104ut_defconfig build fail Greg Kroah-Hartman
2016-02-24  3:33 ` [PATCH 4.4 108/137] dma-debug: switch check from _text to _stext Greg Kroah-Hartman
2016-02-24  3:34 ` [PATCH 4.4 109/137] scripts/bloat-o-meter: fix python3 syntax error Greg Kroah-Hartman
2016-02-24  3:34 ` [PATCH 4.4 110/137] fs/hugetlbfs/inode.c: fix bugs in hugetlb_vmtruncate_list() Greg Kroah-Hartman
2016-02-24  3:34 ` [PATCH 4.4 111/137] numa: fix /proc/<pid>/numa_maps for hugetlbfs on s390 Greg Kroah-Hartman
2016-02-24  3:34 ` [PATCH 4.4 112/137] memcg: only free spare array when readers are done Greg Kroah-Hartman
2016-02-24  3:34 ` [PATCH 4.4 113/137] MAINTAINERS: return arch/sh to maintained state, with new maintainers Greg Kroah-Hartman
2016-02-24  3:34 ` [PATCH 4.4 114/137] radix-tree: fix race in gang lookup Greg Kroah-Hartman
2016-02-24  3:34 ` [PATCH 4.4 115/137] drivers/hwspinlock: fix race between radix tree insertion and lookup Greg Kroah-Hartman
2016-02-24  3:34 ` [PATCH 4.4 116/137] radix-tree: fix oops after radix_tree_iter_retry Greg Kroah-Hartman
2016-02-24  3:34 ` [PATCH 4.4 117/137] dump_stack: avoid potential deadlocks Greg Kroah-Hartman
2016-02-24  3:34 ` [PATCH 4.4 118/137] mm,thp: khugepaged: call pte flush at the time of collapse Greg Kroah-Hartman
2016-02-24  3:34 ` [PATCH 4.4 119/137] intel_scu_ipcutil: underflow in scu_reg_access() Greg Kroah-Hartman
2016-02-24  3:34 ` [PATCH 4.4 120/137] ipc/shm: handle removed segments gracefully in shm_mmap() Greg Kroah-Hartman
2016-02-24  3:34 ` [PATCH 4.4 121/137] devm_memremap_release(): fix memremapd addr handling Greg Kroah-Hartman
2016-02-24  3:34 ` [PATCH 4.4 122/137] futex: Drop refcount if requeue_pi() acquired the rtmutex Greg Kroah-Hartman
2016-02-24  3:34 ` [PATCH 4.4 123/137] ovl: allow zero size xattr Greg Kroah-Hartman
2016-02-24  3:34 ` [PATCH 4.4 124/137] ovl: use a minimal buffer in ovl_copy_xattr Greg Kroah-Hartman
2016-02-24  3:34 ` [PATCH 4.4 125/137] ovl: check dentry positiveness in ovl_cleanup_whiteouts() Greg Kroah-Hartman
2016-02-24  3:34 ` [PATCH 4.4 126/137] ovl: root: copy attr Greg Kroah-Hartman
2016-02-24  3:34 ` [PATCH 4.4 127/137] ovl: setattr: check permissions before copy-up Greg Kroah-Hartman
2016-02-24  3:34 ` [PATCH 4.4 128/137] libxfs: pack the agfl header structure so XFS_AGFL_SIZE is correct Greg Kroah-Hartman
2016-02-24  3:34 ` [PATCH 4.4 129/137] xfs: inode recovery readahead can race with inode buffer creation Greg Kroah-Hartman
2016-02-24  3:34 ` [PATCH 4.4 130/137] Revert "xfs: clear PF_NOFREEZE for xfsaild kthread" Greg Kroah-Hartman
2016-02-24  3:34 ` [PATCH 4.4 131/137] xfs: log mount failures dont wait for buffers to be released Greg Kroah-Hartman
2016-02-24  3:34 ` [PATCH 4.4 132/137] prctl: take mmap sem for writing to protect against others Greg Kroah-Hartman
2016-02-24  3:34 ` [PATCH 4.4 133/137] timerfd: Handle relative timers with CONFIG_TIME_LOW_RES proper Greg Kroah-Hartman
2016-02-24  3:34 ` [PATCH 4.4 134/137] posix-timers: " Greg Kroah-Hartman
2016-02-24  3:34 ` [PATCH 4.4 135/137] itimers: " Greg Kroah-Hartman
2016-02-24  3:34 ` [PATCH 4.4 136/137] module: wrapper for symbol name Greg Kroah-Hartman
2016-02-24  3:34 ` [PATCH 4.4 137/137] modules: fix modparam async_probe request Greg Kroah-Hartman
2016-02-24  4:49 ` [PATCH 4.4 000/137] 4.4.3-stable review Mike Galbraith
2016-02-24  5:00   ` Greg Kroah-Hartman
2016-02-24  6:29     ` Mike Galbraith
2016-02-24 18:28 ` Shuah Khan
2016-02-25 18:36   ` Greg Kroah-Hartman
2016-02-25  5:53 ` Guenter Roeck
2016-02-25 18:36   ` 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=20160224033418.117984503@linuxfoundation.org \
    --to=gregkh@linuxfoundation.org \
    --cc=fdmanana@suse.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=stable@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox