stable.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, Filipe Manana <fdmanana@suse.com>,
	Qu Wenruo <quwenruo@cn.fujitsu.com>,
	Liu Bo <bo.li.liu@oracle.com>
Subject: [PATCH 4.1 072/202] Btrfs: fix read corruption of compressed and shared extents
Date: Sat, 17 Oct 2015 18:57:35 -0700	[thread overview]
Message-ID: <20151018014905.232591142@linuxfoundation.org> (raw)
In-Reply-To: <20151018014901.946875729@linuxfoundation.org>

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

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

From: Filipe Manana <fdmanana@suse.com>

commit 005efedf2c7d0a270ffbe28d8997b03844f3e3e7 upstream.

If a file has a range pointing to a compressed extent, followed by
another range that points to the same compressed extent and a read
operation attempts to read both ranges (either completely or part of
them), the pages that correspond to the second range are incorrectly
filled with zeroes.

Consider the following example:

  File layout
  [0 - 8K]                      [8K - 24K]
      |                             |
      |                             |
   points to extent X,         points to extent X,
   offset 4K, length of 8K     offset 0, length 16K

  [extent X, compressed length = 4K uncompressed length = 16K]

If a readpages() call spans the 2 ranges, a single bio to read the extent
is submitted - extent_io.c:submit_extent_page() would only create a new
bio to cover the second range pointing to the extent if the extent it
points to had a different logical address than the extent associated with
the first range. This has a consequence of the compressed read end io
handler (compression.c:end_compressed_bio_read()) finish once the extent
is decompressed into the pages covering the first range, leaving the
remaining pages (belonging to the second range) filled with zeroes (done
by compression.c:btrfs_clear_biovec_end()).

So fix this by submitting the current bio whenever we find a range
pointing to a compressed extent that was preceded by a range with a
different extent map. This is the simplest solution for this corner
case. Making the end io callback populate both ranges (or more, if we
have multiple pointing to the same extent) is a much more complex
solution since each bio is tightly coupled with a single extent map and
the extent maps associated to the ranges pointing to the shared extent
can have different offsets and lengths.

The following test case for fstests triggers the issue:

  seq=`basename $0`
  seqres=$RESULT_DIR/$seq
  echo "QA output created by $seq"
  tmp=/tmp/$$
  status=1	# failure is the default!
  trap "_cleanup; exit \$status" 0 1 2 3 15

  _cleanup()
  {
      rm -f $tmp.*
  }

  # get standard environment, filters and checks
  . ./common/rc
  . ./common/filter

  # real QA test starts here
  _need_to_be_root
  _supported_fs btrfs
  _supported_os Linux
  _require_scratch
  _require_cloner

  rm -f $seqres.full

  test_clone_and_read_compressed_extent()
  {
      local mount_opts=$1

      _scratch_mkfs >>$seqres.full 2>&1
      _scratch_mount $mount_opts

      # Create a test file with a single extent that is compressed (the
      # data we write into it is highly compressible no matter which
      # compression algorithm is used, zlib or lzo).
      $XFS_IO_PROG -f -c "pwrite -S 0xaa 0K 4K"        \
                      -c "pwrite -S 0xbb 4K 8K"        \
                      -c "pwrite -S 0xcc 12K 4K"       \
                      $SCRATCH_MNT/foo | _filter_xfs_io

      # Now clone our extent into an adjacent offset.
      $CLONER_PROG -s $((4 * 1024)) -d $((16 * 1024)) -l $((8 * 1024)) \
          $SCRATCH_MNT/foo $SCRATCH_MNT/foo

      # Same as before but for this file we clone the extent into a lower
      # file offset.
      $XFS_IO_PROG -f -c "pwrite -S 0xaa 8K 4K"         \
                      -c "pwrite -S 0xbb 12K 8K"        \
                      -c "pwrite -S 0xcc 20K 4K"        \
                      $SCRATCH_MNT/bar | _filter_xfs_io

      $CLONER_PROG -s $((12 * 1024)) -d 0 -l $((8 * 1024)) \
          $SCRATCH_MNT/bar $SCRATCH_MNT/bar

      echo "File digests before unmounting filesystem:"
      md5sum $SCRATCH_MNT/foo | _filter_scratch
      md5sum $SCRATCH_MNT/bar | _filter_scratch

      # Evicting the inode or clearing the page cache before reading
      # again the file would also trigger the bug - reads were returning
      # all bytes in the range corresponding to the second reference to
      # the extent with a value of 0, but the correct data was persisted
      # (it was a bug exclusively in the read path). The issue happened
      # only if the same readpages() call targeted pages belonging to the
      # first and second ranges that point to the same compressed extent.
      _scratch_remount

      echo "File digests after mounting filesystem again:"
      # Must match the same digests we got before.
      md5sum $SCRATCH_MNT/foo | _filter_scratch
      md5sum $SCRATCH_MNT/bar | _filter_scratch
  }

  echo -e "\nTesting with zlib compression..."
  test_clone_and_read_compressed_extent "-o compress=zlib"

  _scratch_unmount

  echo -e "\nTesting with lzo compression..."
  test_clone_and_read_compressed_extent "-o compress=lzo"

  status=0
  exit

Signed-off-by: Filipe Manana <fdmanana@suse.com>
Reviewed-by: Qu Wenruo<quwenruo@cn.fujitsu.com>
Reviewed-by: Liu Bo <bo.li.liu@oracle.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 fs/btrfs/extent_io.c |   65 ++++++++++++++++++++++++++++++++++++++++++++-------
 1 file changed, 57 insertions(+), 8 deletions(-)

--- a/fs/btrfs/extent_io.c
+++ b/fs/btrfs/extent_io.c
@@ -2795,7 +2795,8 @@ static int submit_extent_page(int rw, st
 			      bio_end_io_t end_io_func,
 			      int mirror_num,
 			      unsigned long prev_bio_flags,
-			      unsigned long bio_flags)
+			      unsigned long bio_flags,
+			      bool force_bio_submit)
 {
 	int ret = 0;
 	struct bio *bio;
@@ -2813,6 +2814,7 @@ static int submit_extent_page(int rw, st
 			contig = bio_end_sector(bio) == sector;
 
 		if (prev_bio_flags != bio_flags || !contig ||
+		    force_bio_submit ||
 		    merge_bio(rw, tree, page, offset, page_size, bio, bio_flags) ||
 		    bio_add_page(bio, page, page_size, offset) < page_size) {
 			ret = submit_one_bio(rw, bio, mirror_num,
@@ -2906,7 +2908,8 @@ static int __do_readpage(struct extent_i
 			 get_extent_t *get_extent,
 			 struct extent_map **em_cached,
 			 struct bio **bio, int mirror_num,
-			 unsigned long *bio_flags, int rw)
+			 unsigned long *bio_flags, int rw,
+			 u64 *prev_em_start)
 {
 	struct inode *inode = page->mapping->host;
 	u64 start = page_offset(page);
@@ -2954,6 +2957,7 @@ static int __do_readpage(struct extent_i
 	}
 	while (cur <= end) {
 		unsigned long pnr = (last_byte >> PAGE_CACHE_SHIFT) + 1;
+		bool force_bio_submit = false;
 
 		if (cur >= last_byte) {
 			char *userpage;
@@ -3004,6 +3008,49 @@ static int __do_readpage(struct extent_i
 		block_start = em->block_start;
 		if (test_bit(EXTENT_FLAG_PREALLOC, &em->flags))
 			block_start = EXTENT_MAP_HOLE;
+
+		/*
+		 * If we have a file range that points to a compressed extent
+		 * and it's followed by a consecutive file range that points to
+		 * to the same compressed extent (possibly with a different
+		 * offset and/or length, so it either points to the whole extent
+		 * or only part of it), we must make sure we do not submit a
+		 * single bio to populate the pages for the 2 ranges because
+		 * this makes the compressed extent read zero out the pages
+		 * belonging to the 2nd range. Imagine the following scenario:
+		 *
+		 *  File layout
+		 *  [0 - 8K]                     [8K - 24K]
+		 *    |                               |
+		 *    |                               |
+		 * points to extent X,         points to extent X,
+		 * offset 4K, length of 8K     offset 0, length 16K
+		 *
+		 * [extent X, compressed length = 4K uncompressed length = 16K]
+		 *
+		 * If the bio to read the compressed extent covers both ranges,
+		 * it will decompress extent X into the pages belonging to the
+		 * first range and then it will stop, zeroing out the remaining
+		 * pages that belong to the other range that points to extent X.
+		 * So here we make sure we submit 2 bios, one for the first
+		 * range and another one for the third range. Both will target
+		 * the same physical extent from disk, but we can't currently
+		 * make the compressed bio endio callback populate the pages
+		 * for both ranges because each compressed bio is tightly
+		 * coupled with a single extent map, and each range can have
+		 * an extent map with a different offset value relative to the
+		 * uncompressed data of our extent and different lengths. This
+		 * is a corner case so we prioritize correctness over
+		 * non-optimal behavior (submitting 2 bios for the same extent).
+		 */
+		if (test_bit(EXTENT_FLAG_COMPRESSED, &em->flags) &&
+		    prev_em_start && *prev_em_start != (u64)-1 &&
+		    *prev_em_start != em->orig_start)
+			force_bio_submit = true;
+
+		if (prev_em_start)
+			*prev_em_start = em->orig_start;
+
 		free_extent_map(em);
 		em = NULL;
 
@@ -3053,7 +3100,8 @@ static int __do_readpage(struct extent_i
 					 bdev, bio, pnr,
 					 end_bio_extent_readpage, mirror_num,
 					 *bio_flags,
-					 this_bio_flag);
+					 this_bio_flag,
+					 force_bio_submit);
 		if (!ret) {
 			nr++;
 			*bio_flags = this_bio_flag;
@@ -3085,6 +3133,7 @@ static inline void __do_contiguous_readp
 	struct inode *inode;
 	struct btrfs_ordered_extent *ordered;
 	int index;
+	u64 prev_em_start = (u64)-1;
 
 	inode = pages[0]->mapping->host;
 	while (1) {
@@ -3100,7 +3149,7 @@ static inline void __do_contiguous_readp
 
 	for (index = 0; index < nr_pages; index++) {
 		__do_readpage(tree, pages[index], get_extent, em_cached, bio,
-			      mirror_num, bio_flags, rw);
+			      mirror_num, bio_flags, rw, &prev_em_start);
 		page_cache_release(pages[index]);
 	}
 }
@@ -3168,7 +3217,7 @@ static int __extent_read_full_page(struc
 	}
 
 	ret = __do_readpage(tree, page, get_extent, NULL, bio, mirror_num,
-			    bio_flags, rw);
+			    bio_flags, rw, NULL);
 	return ret;
 }
 
@@ -3194,7 +3243,7 @@ int extent_read_full_page_nolock(struct
 	int ret;
 
 	ret = __do_readpage(tree, page, get_extent, NULL, &bio, mirror_num,
-				      &bio_flags, READ);
+			    &bio_flags, READ, NULL);
 	if (bio)
 		ret = submit_one_bio(READ, bio, mirror_num, bio_flags);
 	return ret;
@@ -3447,7 +3496,7 @@ static noinline_for_stack int __extent_w
 						 sector, iosize, pg_offset,
 						 bdev, &epd->bio, max_nr,
 						 end_bio_extent_writepage,
-						 0, 0, 0);
+						 0, 0, 0, false);
 			if (ret)
 				SetPageError(page);
 		}
@@ -3749,7 +3798,7 @@ static noinline_for_stack int write_one_
 		ret = submit_extent_page(rw, tree, p, offset >> 9,
 					 PAGE_CACHE_SIZE, 0, bdev, &epd->bio,
 					 -1, end_bio_extent_buffer_writepage,
-					 0, epd->bio_flags, bio_flags);
+					 0, epd->bio_flags, bio_flags, false);
 		epd->bio_flags = bio_flags;
 		if (ret) {
 			set_btree_ioerr(p);



  parent reply	other threads:[~2015-10-18  2:31 UTC|newest]

Thread overview: 194+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-10-18  1:56 [PATCH 4.1 000/202] 4.1.11-stable review Greg Kroah-Hartman
2015-10-18  1:56 ` [PATCH 4.1 001/202] arm: KVM: Fix incorrect device to IPA mapping Greg Kroah-Hartman
2015-10-18  1:56 ` [PATCH 4.1 003/202] kvm: dont try to register to KVM_FAST_MMIO_BUS for non mmio eventfd Greg Kroah-Hartman
2015-10-18  1:56 ` [PATCH 4.1 004/202] kvm: fix zero length mmio searching Greg Kroah-Hartman
2015-10-18  1:56 ` [PATCH 4.1 005/202] kvm: factor out core eventfd assign/deassign logic Greg Kroah-Hartman
2015-10-18  1:56 ` [PATCH 4.1 006/202] kvm: fix double free for fast mmio eventfd Greg Kroah-Hartman
2015-10-18  1:56 ` [PATCH 4.1 007/202] arm: KVM: Disable virtual timer even if the guest is not using it Greg Kroah-Hartman
2015-10-18  1:56 ` [PATCH 4.1 008/202] KVM: PPC: Book3S: Take the kvm->srcu lock in kvmppc_h_logical_ci_load/store() Greg Kroah-Hartman
2015-10-18  1:56 ` [PATCH 4.1 009/202] KVM: PPC: Book3S HV: Pass the correct trap argument to kvmhv_commence_exit Greg Kroah-Hartman
2015-10-18  1:56 ` [PATCH 4.1 011/202] target/iscsi: Fix np_ip bracket issue by removing np_ip Greg Kroah-Hartman
2015-10-18  1:56 ` [PATCH 4.1 012/202] scsi: fix scsi_error_handler vs. scsi_host_dev_release race Greg Kroah-Hartman
2015-10-18  1:56 ` [PATCH 4.1 013/202] target: Attach EXTENDED_COPY local I/O descriptors to xcopy_pt_sess Greg Kroah-Hartman
2015-10-18  1:56 ` [PATCH 4.1 014/202] iser-target: remove command with state ISTATE_REMOVE Greg Kroah-Hartman
2015-10-18  1:56 ` [PATCH 4.1 015/202] iser-target: Put the reference on commands waiting for unsol data Greg Kroah-Hartman
2015-10-18  1:56 ` [PATCH 4.1 016/202] target: Fix v4.1 UNIT_ATTENTION se_node_acl->device_list[] NULL pointer Greg Kroah-Hartman
2015-10-18  1:56 ` [PATCH 4.1 017/202] toshiba_acpi: Fix hotkeys registration on some toshiba models Greg Kroah-Hartman
2015-10-18  1:56 ` [PATCH 4.1 018/202] perf/x86/intel: Fix constraint access Greg Kroah-Hartman
2015-10-18  1:56 ` [PATCH 4.1 019/202] perf tools: Fix copying of /proc/kcore Greg Kroah-Hartman
2015-10-18  1:56 ` [PATCH 4.1 020/202] perf hists: Update the column width for the "srcline" sort key Greg Kroah-Hartman
2015-10-18  1:56 ` [PATCH 4.1 021/202] perf stat: Get correct cpu id for print_aggr Greg Kroah-Hartman
2015-10-18  1:56 ` [PATCH 4.1 022/202] perf tools: Add empty Build files for architectures lacking them Greg Kroah-Hartman
2015-10-18  1:56 ` [PATCH 4.1 023/202] perf header: Fixup reading of HEADER_NRCPUS feature Greg Kroah-Hartman
2015-10-18  1:56 ` [PATCH 4.1 024/202] perf: Fix AUX buffer refcounting Greg Kroah-Hartman
2015-10-18  1:56 ` [PATCH 4.1 025/202] watchdog: sunxi: fix activation of system reset Greg Kroah-Hartman
2015-10-18  1:56 ` [PATCH 4.1 026/202] sched: access local runqueue directly in single_task_running Greg Kroah-Hartman
2015-10-18  1:56 ` [PATCH 4.1 027/202] hwmon: (nct6775) Swap STEP_UP_TIME and STEP_DOWN_TIME registers for most chips Greg Kroah-Hartman
2015-10-18  1:56 ` [PATCH 4.1 028/202] ARM: fix Thumb2 signal handling when ARMv6 is enabled Greg Kroah-Hartman
2015-10-18  1:56 ` [PATCH 4.1 029/202] ARM: 8429/1: disable GCC SRA optimization Greg Kroah-Hartman
2015-10-18  1:56 ` [PATCH 4.1 030/202] windfarm: decrement client count when unregistering Greg Kroah-Hartman
2015-10-18  1:56 ` [PATCH 4.1 031/202] ARM: 8425/1: kgdb: Dont try to stop the machine when setting breakpoints Greg Kroah-Hartman
2015-10-18  1:56 ` [PATCH 4.1 032/202] ARM: dts: omap5-uevm.dts: fix i2c5 pinctrl offsets Greg Kroah-Hartman
2015-10-18  1:56 ` [PATCH 4.1 033/202] ARM: dts: omap3-beagle: make i2c3, ddc and tfp410 gpio work again Greg Kroah-Hartman
2015-10-18  1:56 ` [PATCH 4.1 034/202] ARM: EXYNOS: reset Little cores when cpu is up Greg Kroah-Hartman
2015-10-18  1:56 ` [PATCH 4.1 035/202] ARM: dts: fix usb pin control for imx-rex dts Greg Kroah-Hartman
2015-10-18  1:56 ` [PATCH 4.1 036/202] blockdev: dont set S_DAX for misaligned partitions Greg Kroah-Hartman
2015-10-18  1:57 ` [PATCH 4.1 037/202] dmaengine: dw: properly read DWC_PARAMS register Greg Kroah-Hartman
2015-10-18  1:57 ` [PATCH 4.1 038/202] x86/apic: Serialize LVTT and TSC_DEADLINE writes Greg Kroah-Hartman
2015-10-18  1:57 ` [PATCH 4.1 039/202] x86/alternatives: Make optimize_nops() interrupt safe and synced Greg Kroah-Hartman
2015-10-18  1:57 ` [PATCH 4.1 040/202] x86/platform: Fix Geode LX timekeeping in the generic x86 build Greg Kroah-Hartman
2015-10-18  1:57 ` [PATCH 4.1 041/202] x86/paravirt: Replace the paravirt nop with a bona fide empty function Greg Kroah-Hartman
2015-10-18  1:57 ` [PATCH 4.1 042/202] x86/nmi/64: Fix a paravirt stack-clobbering bug in the NMI code Greg Kroah-Hartman
2015-10-18  1:57 ` [PATCH 4.1 043/202] Use WARN_ON_ONCE for missing X86_FEATURE_NRIPS Greg Kroah-Hartman
2015-10-18  1:57 ` [PATCH 4.1 044/202] x86/efi: Fix boot crash by mapping EFI memmap entries bottom-up at runtime, instead of top-down Greg Kroah-Hartman
2015-10-18  1:57 ` [PATCH 4.1 045/202] x86/kexec: Fix kexec crash in syscall kexec_file_load() Greg Kroah-Hartman
2015-10-18  1:57 ` [PATCH 4.1 046/202] x86/process: Add proper bound checks in 64bit get_wchan() Greg Kroah-Hartman
2015-10-18  1:57 ` [PATCH 4.1 047/202] x86/mm: Set NX on gap between __ex_table and rodata Greg Kroah-Hartman
2015-10-18  1:57 ` [PATCH 4.1 048/202] x86/xen: Support kexec/kdump in HVM guests by doing a soft reset Greg Kroah-Hartman
2015-10-18  1:57 ` [PATCH 4.1 049/202] leds/led-class: Add missing put_device() Greg Kroah-Hartman
2015-10-18  1:57 ` [PATCH 4.1 050/202] sched/core: Fix TASK_DEAD race in finish_task_switch() Greg Kroah-Hartman
2015-10-18  1:57 ` [PATCH 4.1 051/202] s390/compat: correct uc_sigmask of the compat signal frame Greg Kroah-Hartman
2015-10-18  1:57 ` [PATCH 4.1 052/202] s390/boot/decompression: disable floating point in decompressor Greg Kroah-Hartman
2015-10-18  1:57 ` [PATCH 4.1 053/202] spi: Fix documentation of spi_alloc_master() Greg Kroah-Hartman
2015-10-18  1:57 ` [PATCH 4.1 054/202] spi: xtensa-xtfpga: fix register endianness Greg Kroah-Hartman
2015-10-18  1:57 ` [PATCH 4.1 055/202] spi: spi-pxa2xx: Check status register to determine if SSSR_TINT is disabled Greg Kroah-Hartman
2015-10-18  1:57 ` [PATCH 4.1 056/202] spi: spidev: fix possible NULL dereference Greg Kroah-Hartman
2015-10-18  1:57 ` [PATCH 4.1 057/202] mm: migrate: hugetlb: putback destination hugepage to active list Greg Kroah-Hartman
2015-10-18  1:57 ` [PATCH 4.1 058/202] lib/iommu-common.c: do not try to deref a null iommu->lazy_flush() pointer when n < pool->hint Greg Kroah-Hartman
2015-10-18  1:57 ` [PATCH 4.1 059/202] ocfs2/dlm: fix deadlock when dispatch assert master Greg Kroah-Hartman
2015-10-18  1:57 ` [PATCH 4.1 060/202] mm: hugetlbfs: skip shared VMAs when unmapping private pages to satisfy a fault Greg Kroah-Hartman
2015-10-18  1:57 ` [PATCH 4.1 061/202] ALSA: hda - Disable power_save_node for Thinkpads Greg Kroah-Hartman
2015-10-18  1:57 ` [PATCH 4.1 062/202] ALSA: synth: Fix conflicting OSS device registration on AWE32 Greg Kroah-Hartman
2015-10-18  1:57 ` [PATCH 4.1 063/202] ALSA: hda: Add dock support for ThinkPad T550 Greg Kroah-Hartman
2015-10-18  1:57 ` [PATCH 4.1 064/202] ALSA: hda - Apply SPDIF pin ctl to MacBookPro 12,1 Greg Kroah-Hartman
2015-10-18  1:57 ` [PATCH 4.1 065/202] ALSA: hda - Disable power_save_node for IDT 92HD73xx chips Greg Kroah-Hartman
2015-10-18  1:57 ` [PATCH 4.1 066/202] ASoC: pxa: pxa2xx-ac97: fix dma requestor lines Greg Kroah-Hartman
2015-10-18  1:57 ` [PATCH 4.1 067/202] ASoC: fix broken pxa SoC support Greg Kroah-Hartman
2015-10-18  1:57 ` [PATCH 4.1 068/202] ASoC: dwc: correct irq clear method Greg Kroah-Hartman
2015-10-18  1:57 ` [PATCH 4.1 069/202] ASoC: db1200: Fix DAI link format for db1300 and db1550 Greg Kroah-Hartman
2015-10-18  1:57 ` [PATCH 4.1 070/202] ASoC: sgtl5000: fix wrong register MIC_BIAS_VOLTAGE setup on probe Greg Kroah-Hartman
2015-10-18  1:57 ` [PATCH 4.1 071/202] btrfs: skip waiting on ordered range for special files Greg Kroah-Hartman
2015-10-18  1:57 ` Greg Kroah-Hartman [this message]
2015-10-18  1:57 ` [PATCH 4.1 073/202] Btrfs: update fix for read corruption of compressed and shared extents Greg Kroah-Hartman
2015-10-18  1:57 ` [PATCH 4.1 074/202] PCI: Fix devfn for VPD access through function 0 Greg Kroah-Hartman
2015-10-18  1:57 ` [PATCH 4.1 075/202] PCI: Use function 0 VPD for identical functions, regular VPD for others Greg Kroah-Hartman
2015-10-18  1:57 ` [PATCH 4.1 076/202] PCI: Clear IORESOURCE_UNSET when clipping a bridge window Greg Kroah-Hartman
2015-10-18  1:57 ` [PATCH 4.1 077/202] dm crypt: constrain crypt devices max_segment_size to PAGE_SIZE Greg Kroah-Hartman
2015-10-18  1:57 ` [PATCH 4.1 078/202] ath10k: fix dma_mapping_error() handling Greg Kroah-Hartman
2015-10-18  1:57 ` [PATCH 4.1 079/202] svcrdma: Fix send_reply() scatter/gather set-up Greg Kroah-Hartman
2015-10-18  1:57 ` [PATCH 4.1 080/202] dm btree: add ref counting ops for the leaves of top level btrees Greg Kroah-Hartman
2015-10-18  1:57 ` [PATCH 4.1 081/202] staging: ion: fix corruption of ion_import_dma_buf Greg Kroah-Hartman
2015-10-18  1:57 ` [PATCH 4.1 082/202] USB: option: add ZTE PIDs Greg Kroah-Hartman
2015-10-18  1:57 ` [PATCH 4.1 083/202] md/raid0: update queue parameter in a safer location Greg Kroah-Hartman
2015-10-18  1:57 ` [PATCH 4.1 084/202] md/raid0: apply base queue limits *before* disk_stack_limits Greg Kroah-Hartman
2015-10-18  1:57 ` [PATCH 4.1 085/202] dm raid: fix round up of default region size Greg Kroah-Hartman
2015-10-18  1:57 ` [PATCH 4.1 086/202] netfilter: nfnetlink: work around wrong endianess in res_id field Greg Kroah-Hartman
2015-10-18  1:57 ` [PATCH 4.1 087/202] netfilter: nf_tables: Use 32 bit addressing register from nft_type_to_reg() Greg Kroah-Hartman
2015-10-18  1:57 ` [PATCH 4.1 088/202] netfilter: nf_conntrack: Support expectations in different zones Greg Kroah-Hartman
2015-10-18  1:57 ` [PATCH 4.1 089/202] netfilter: ctnetlink: put back references to master ct and expect objects Greg Kroah-Hartman
2015-10-18  1:57 ` [PATCH 4.1 090/202] netfilter: nf_qeueue: Drop queue entries on nf_unregister_hook Greg Kroah-Hartman
2015-10-18  1:57 ` [PATCH 4.1 091/202] netfilter: nftables: Do not run chains in the wrong network namespace Greg Kroah-Hartman
2015-10-18  1:57 ` [PATCH 4.1 092/202] netfilter: nf_log: wait for rcu grace after logger unregistration Greg Kroah-Hartman
2015-10-18  1:57 ` [PATCH 4.1 093/202] netfilter: nft_compat: skip family comparison in case of NFPROTO_UNSPEC Greg Kroah-Hartman
2015-10-18  1:57 ` [PATCH 4.1 094/202] netfilter: nf_log: dont zap all loggers on unregister Greg Kroah-Hartman
2015-10-18  1:57 ` [PATCH 4.1 095/202] Bluetooth: Delay check for conn->smp in smp_conn_security() Greg Kroah-Hartman
2015-10-18  1:57 ` [PATCH 4.1 096/202] NFS: Do cleanup before resetting pageio read/write to mds Greg Kroah-Hartman
2015-10-18  1:58 ` [PATCH 4.1 097/202] nfs: fix pg_test page count calculation Greg Kroah-Hartman
2015-10-18  1:58 ` [PATCH 4.1 098/202] NFS: Fix a write performance regression Greg Kroah-Hartman
2015-10-18  1:58 ` [PATCH 4.1 099/202] [SMB3] Fix sec=krb5 on smb3 mounts Greg Kroah-Hartman
2015-10-18  1:58 ` [PATCH 4.1 100/202] disabling oplocks/leases via module parm enable_oplocks broken for SMB3 Greg Kroah-Hartman
2015-10-18  1:58 ` [PATCH 4.1 101/202] [SMB3] Do not fall back to SMBWriteX in set_file_size error cases Greg Kroah-Hartman
2015-10-18  1:58 ` [PATCH 4.1 102/202] drm/qxl: only report first monitor as connected if we have no state Greg Kroah-Hartman
2015-10-18  1:58 ` [PATCH 4.1 104/202] drm/i915/bios: handle MIPI Sequence Block v3+ gracefully Greg Kroah-Hartman
2015-10-18  1:58 ` [PATCH 4.1 105/202] drm: Reject DRI1 hw lock ioctl functions for kms drivers Greg Kroah-Hartman
2015-10-18  1:58 ` [PATCH 4.1 107/202] drm/dp/mst: drop cancel work sync in the mstb destroy path (v2) Greg Kroah-Hartman
2015-10-18  1:58 ` [PATCH 4.1 108/202] USB: whiteheat: fix potential null-deref at probe Greg Kroah-Hartman
2015-10-18  1:58 ` [PATCH 4.1 109/202] xhci: give command abortion one more chance before killing xhci Greg Kroah-Hartman
2015-10-18  1:58 ` [PATCH 4.1 110/202] usb: xhci: lock mutex on xhci_stop Greg Kroah-Hartman
2015-10-18  1:58 ` [PATCH 4.1 111/202] usb: xhci: Clear XHCI_STATE_DYING on start Greg Kroah-Hartman
2015-10-18  1:58 ` [PATCH 4.1 112/202] usb: xhci: exit early in xhci_setup_device() if were halted or dying Greg Kroah-Hartman
2015-10-18  1:58 ` [PATCH 4.1 113/202] xhci: change xhci 1.0 only restrictions to support xhci 1.1 Greg Kroah-Hartman
2015-10-18  1:58 ` [PATCH 4.1 114/202] xhci: init command timeout timer earlier to avoid deleting it uninitialized Greg Kroah-Hartman
2015-10-18  1:58 ` [PATCH 4.1 115/202] usb: xhci: Add support for URB_ZERO_PACKET to bulk/sg transfers Greg Kroah-Hartman
2015-10-18  1:58 ` [PATCH 4.1 116/202] Initialize msg/shm IPC objects before doing ipc_addid() Greg Kroah-Hartman
2015-10-18  1:58 ` [PATCH 4.1 117/202] sched/fair: Prevent throttling in early pick_next_task_fair() Greg Kroah-Hartman
2015-10-18  1:58 ` [PATCH 4.1 118/202] [PATCH REPOST] serial/amba-pl011: Disable interrupts around TX softirq Greg Kroah-Hartman
2015-10-18  1:58 ` [PATCH 4.1 119/202] ipvs: do not use random local source address for tunnels Greg Kroah-Hartman
2015-10-18  1:58 ` [PATCH 4.1 120/202] ipvs: fix crash if scheduler is changed Greg Kroah-Hartman
2015-10-18  1:58 ` [PATCH 4.1 121/202] ipvs: skb_orphan in case of forwarding Greg Kroah-Hartman
2015-10-18  1:58 ` [PATCH 4.1 122/202] ipvs: fix crash with sync protocol v0 and FTP Greg Kroah-Hartman
2015-10-18  1:58 ` [PATCH 4.1 123/202] ipvs: call skb_sender_cpu_clear Greg Kroah-Hartman
2015-10-18  1:58 ` [PATCH 4.1 124/202] fbdev: select versatile helpers for the integrator Greg Kroah-Hartman
2015-10-18  1:58 ` [PATCH 4.1 125/202] batman-adv: fix kernel crash due to missing NULL checks Greg Kroah-Hartman
2015-10-18  1:58 ` [PATCH 4.1 126/202] batman-adv: protect tt_local_entry from concurrent delete events Greg Kroah-Hartman
2015-10-18  1:58 ` [PATCH 4.1 128/202] mmc: dw_mmc: handle data blocks > than 4kB if IDMAC is used Greg Kroah-Hartman
2015-10-18  1:58 ` [PATCH 4.1 129/202] mmc: sdhci-esdhc-imx: Move mmc_of_parse() to the dt probe Greg Kroah-Hartman
2015-10-18  1:58 ` [PATCH 4.1 130/202] mmc: sdhci-esdhc-imx: Do not break platform data boards Greg Kroah-Hartman
2015-10-18  1:58 ` [PATCH 4.1 131/202] mmc: sdhci-esdhc-imx: fix cd regression for dt platform Greg Kroah-Hartman
2015-10-18  1:58 ` [PATCH 4.1 132/202] dts: imx51: fix sd card gpio polarity specified in device tree Greg Kroah-Hartman
2015-10-18  1:58 ` [PATCH 4.1 133/202] dts: imx53: " Greg Kroah-Hartman
2015-10-18  1:58 ` [PATCH 4.1 134/202] dts: imx25: " Greg Kroah-Hartman
2015-10-18  1:58 ` [PATCH 4.1 135/202] usb: chipidea: imx: fix a typo for imx6sx Greg Kroah-Hartman
2015-10-18  1:58 ` [PATCH 4.1 136/202] cifs: use server timestamp for ntlmv2 authentication Greg Kroah-Hartman
2015-10-18  1:58 ` [PATCH 4.1 137/202] irqchip/atmel-aic5: Use per chip mask caches in mask/unmask() Greg Kroah-Hartman
2015-10-18  1:58 ` [PATCH 4.1 138/202] irqchip/gic-v3-its: Add missing cache flushes Greg Kroah-Hartman
2015-10-18  1:58 ` [PATCH 4.1 139/202] docs: update HOWTO for 3.x -> 4.x versioning Greg Kroah-Hartman
2015-10-18  1:58 ` [PATCH 4.1 140/202] mtd: pxa3xx_nand: add a default chunk size Greg Kroah-Hartman
2015-10-18  1:58 ` [PATCH 4.1 141/202] mtd: nand: sunxi: fix sunxi_nand_chips_cleanup() Greg Kroah-Hartman
2015-10-18  1:58 ` [PATCH 4.1 142/202] mtd: nand: sunxi: fix OOB handling in ->write_xxx() functions Greg Kroah-Hartman
2015-10-18  1:58 ` [PATCH 4.1 143/202] PM / AVS: rockchip-io: depend on CONFIG_POWER_AVS Greg Kroah-Hartman
2015-10-18  1:58 ` [PATCH 4.1 144/202] device property: fix potential NULL pointer dereference Greg Kroah-Hartman
2015-10-18  1:58 ` [PATCH 4.1 145/202] ath10k: reject 11b tx fragmentation configuration Greg Kroah-Hartman
2015-10-18  1:58 ` [PATCH 4.1 146/202] pcmcia: sa11x0: fix missing clk_put() in sa11x0 socket drivers Greg Kroah-Hartman
2015-10-18  1:58 ` [PATCH 4.1 147/202] ipr: Enable SIS pipe commands for SIS-32 devices Greg Kroah-Hartman
2015-10-18  1:58 ` [PATCH 4.1 148/202] regmap: debugfs: Ensure we dont underflow when printing access masks Greg Kroah-Hartman
2015-10-18  1:58 ` [PATCH 4.1 149/202] regmap: debugfs: Dont bother actually printing when calculating max length Greg Kroah-Hartman
2015-10-18  1:58 ` [PATCH 4.1 150/202] security: fix typo in security_task_prctl Greg Kroah-Hartman
2015-10-18  1:58 ` [PATCH 4.1 151/202] usb: musb: dsps: fix polling in device-only mode Greg Kroah-Hartman
2015-10-18  1:58 ` [PATCH 4.1 152/202] usb: chipidea: udc: using the correct stall implementation Greg Kroah-Hartman
2015-10-18  1:58 ` [PATCH 4.1 153/202] usb: Use the USB_SS_MULT() macro to get the burst multiplier Greg Kroah-Hartman
2015-10-18  1:58 ` [PATCH 4.1 154/202] usb: phy: phy-generic: Fix reset behaviour on legacy boot Greg Kroah-Hartman
2015-10-18  1:58 ` [PATCH 4.1 155/202] usb: musb: cppi41: allow it to work again Greg Kroah-Hartman
2015-10-18  1:58 ` [PATCH 4.1 156/202] USB: chaoskey read offset bug Greg Kroah-Hartman
2015-10-18  1:59 ` [PATCH 4.1 157/202] usb: Add device quirk for Logitech PTZ cameras Greg Kroah-Hartman
2015-10-18  1:59 ` [PATCH 4.1 158/202] USB: Add reset-resume quirk for two Plantronics usb headphones Greg Kroah-Hartman
2015-10-18  1:59 ` [PATCH 4.1 160/202] cpufreq: dt: Tolerance applies on both sides of target voltage Greg Kroah-Hartman
2015-10-18  1:59 ` [PATCH 4.1 161/202] MIPS: dma-default: Fix 32-bit fall back to GFP_DMA Greg Kroah-Hartman
2015-10-18  1:59 ` [PATCH 4.1 167/202] tools lib traceevent: Fix string handling in heterogeneous arch environments Greg Kroah-Hartman
2015-10-18  1:59 ` [PATCH 4.1 168/202] powerpc/MSI: Fix race condition in tearing down MSI interrupts Greg Kroah-Hartman
2015-10-18  1:59 ` [PATCH 4.1 169/202] rsi: Fix possible leak when loading firmware Greg Kroah-Hartman
2015-10-18  1:59 ` [PATCH 4.1 171/202] UBIFS: Kill unneeded locking in ubifs_init_security Greg Kroah-Hartman
2015-10-18  1:59 ` [PATCH 4.1 172/202] UBI: Validate data_size Greg Kroah-Hartman
2015-10-18  1:59 ` [PATCH 4.1 173/202] UBI: return ENOSPC if no enough space available Greg Kroah-Hartman
2015-10-18  1:59 ` [PATCH 4.1 174/202] mmc: sdhci: fix dma memory leak in sdhci_pre_req() Greg Kroah-Hartman
2015-10-18  1:59 ` [PATCH 4.1 175/202] mmc: core: Dont return an error for CD/WP GPIOs when GPIOLIB is unset Greg Kroah-Hartman
2015-10-18  1:59 ` [PATCH 4.1 176/202] dcache: Handle escaped paths in prepend_path Greg Kroah-Hartman
2015-10-18  1:59 ` [PATCH 4.1 177/202] vfs: Test for and handle paths that are unreachable from their mnt_root Greg Kroah-Hartman
2015-10-18  1:59 ` [PATCH 4.1 178/202] arm64/efi: Fix boot crash by not padding between EFI_MEMORY_RUNTIME regions Greg Kroah-Hartman
2015-10-18  1:59 ` [PATCH 4.1 179/202] arm64: ftrace: fix function_graph tracer panic Greg Kroah-Hartman
2015-10-18  1:59 ` [PATCH 4.1 180/202] arm64: readahead: fault retry breaks mmap file read random detection Greg Kroah-Hartman
2015-10-18  1:59 ` [PATCH 4.1 181/202] m68k: Define asmlinkage_protect Greg Kroah-Hartman
2015-10-18  1:59 ` [PATCH 4.1 182/202] net/xen-netfront: only napi_synchronize() if running Greg Kroah-Hartman
2015-10-18  1:59 ` [PATCH 4.1 183/202] igb: do not re-init SR-IOV during probe Greg Kroah-Hartman
2015-10-18  1:59 ` [PATCH 4.1 184/202] genirq: Fix race in register_irq_proc() Greg Kroah-Hartman
2015-10-18  1:59 ` [PATCH 4.1 185/202] md/bitmap: dont pass -1 to bitmap_storage_alloc Greg Kroah-Hartman
2015-10-18  1:59 ` [PATCH 4.1 186/202] overlay: Call ovl_drop_write() earlier in ovl_dentry_open() Greg Kroah-Hartman
2015-10-18  1:59 ` [PATCH 4.1 187/202] overlayfs: Make f_path always point to the overlay and f_inode to the underlay Greg Kroah-Hartman
2015-10-18  1:59 ` [PATCH 4.1 188/202] fix a braino in ovl_d_select_inode() Greg Kroah-Hartman
2015-10-18  1:59 ` [PATCH 4.1 189/202] nfs/filelayout: Fix NULL reference caused by double freeing of fh_array Greg Kroah-Hartman
2015-10-18  1:59 ` [PATCH 4.1 190/202] clk: ti: fix dual-registration of uart4_ick Greg Kroah-Hartman
2015-10-18  1:59 ` [PATCH 4.1 191/202] namei: results of d_is_negative() should be checked after dentry revalidation Greg Kroah-Hartman
2015-10-18  1:59 ` [PATCH 4.1 192/202] dm: fix AB-BA deadlock in __dm_destroy() Greg Kroah-Hartman
2015-10-18  1:59 ` [PATCH 4.1 193/202] dm cache: fix NULL pointer when switching from cleaner policy Greg Kroah-Hartman
2015-10-18  1:59 ` [PATCH 4.1 194/202] staging: speakup: fix speakup-r regression Greg Kroah-Hartman
2015-10-18  1:59 ` [PATCH 4.1 195/202] tty: fix stall caused by missing memory barrier in drivers/tty/n_tty.c Greg Kroah-Hartman
2015-10-18  1:59 ` [PATCH 4.1 196/202] drivers/tty: require read access for controlling terminal Greg Kroah-Hartman
2015-10-18  1:59 ` [PATCH 4.1 197/202] serial: 8250: add uart_config entry for PORT_RT2880 Greg Kroah-Hartman
2015-10-18  1:59 ` [PATCH 4.1 199/202] intel_pstate: Fix overflow in busy_scaled due to long delay Greg Kroah-Hartman
2015-10-18  1:59 ` [PATCH 4.1 200/202] mm/slab: fix unexpected index mapping result of kmalloc_size(INDEX_NODE+1) Greg Kroah-Hartman
2015-10-18  1:59 ` [PATCH 4.1 201/202] MIPS: Fix console output for Fulong2e system Greg Kroah-Hartman
2015-10-19  4:12 ` ***SPAM*** [PATCH 4.1 000/202] 4.1.11-stable review Guenter Roeck
2015-10-19 15:14   ` Greg Kroah-Hartman
2015-10-19 15:28     ` Willy Tarreau
2015-10-20  1:29       ` Guenter Roeck
2015-10-19 15:20 ` 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=20151018014905.232591142@linuxfoundation.org \
    --to=gregkh@linuxfoundation.org \
    --cc=bo.li.liu@oracle.com \
    --cc=fdmanana@suse.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=quwenruo@cn.fujitsu.com \
    --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;
as well as URLs for NNTP newsgroup(s).