]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
delete queue-4.4/cifs-fix-splice-read-for-non-cached-files.patch
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 8 Mar 2017 14:17:55 +0000 (15:17 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 8 Mar 2017 14:17:55 +0000 (15:17 +0100)
queue-4.4/cifs-fix-splice-read-for-non-cached-files.patch [deleted file]
queue-4.4/series

diff --git a/queue-4.4/cifs-fix-splice-read-for-non-cached-files.patch b/queue-4.4/cifs-fix-splice-read-for-non-cached-files.patch
deleted file mode 100644 (file)
index 36f722a..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-From 9c25702cee1405099f982894c865c163de7909a8 Mon Sep 17 00:00:00 2001
-From: Pavel Shilovsky <pshilov@microsoft.com>
-Date: Thu, 19 Jan 2017 13:53:15 -0800
-Subject: CIFS: Fix splice read for non-cached files
-
-From: Pavel Shilovsky <pshilov@microsoft.com>
-
-commit 9c25702cee1405099f982894c865c163de7909a8 upstream.
-
-Currently we call copy_page_to_iter() for uncached reading into a pipe.
-This is wrong because it treats pages as VFS cache pages and copies references
-rather than actual data. When we are trying to read from the pipe we end up
-calling page_cache_pipe_buf_confirm() which returns -ENODATA. This error
-is translated into 0 which is returned to a user.
-
-This issue is reproduced by running xfs-tests suite (generic test #249)
-against mount points with "cache=none". Fix it by mapping pages manually
-and calling copy_to_iter() that copies data into the pipe.
-
-Signed-off-by: Pavel Shilovsky <pshilov@microsoft.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-
----
- fs/cifs/file.c |   10 +++++++++-
- 1 file changed, 9 insertions(+), 1 deletion(-)
-
---- a/fs/cifs/file.c
-+++ b/fs/cifs/file.c
-@@ -2840,7 +2840,15 @@ cifs_readdata_to_iov(struct cifs_readdat
-       for (i = 0; i < rdata->nr_pages; i++) {
-               struct page *page = rdata->pages[i];
-               size_t copy = min_t(size_t, remaining, PAGE_SIZE);
--              size_t written = copy_page_to_iter(page, 0, copy, iter);
-+              size_t written;
-+
-+              if (unlikely(iter->type & ITER_PIPE)) {
-+                      void *addr = kmap_atomic(page);
-+
-+                      written = copy_to_iter(addr, copy, iter);
-+                      kunmap_atomic(addr);
-+              } else
-+                      written = copy_page_to_iter(page, 0, copy, iter);
-               remaining -= written;
-               if (written < copy && iov_iter_count(iter) > 0)
-                       break;
index ba065c5ca6ac3668fef55a5be92983dede59ae0c..be32022bae78795effa544719512a56bbcefd225 100644 (file)
@@ -25,7 +25,6 @@ staging-rtl-fix-possible-null-pointer-dereference.patch
 regulator-fix-regulator_summary-for-deviceless-consumers.patch
 iommu-vt-d-fix-some-macros-that-are-incorrectly-specified-in-intel-iommu.patch
 iommu-vt-d-tylersburg-isoch-identity-map-check-is-done-too-late.patch
-cifs-fix-splice-read-for-non-cached-files.patch
 mm-page_alloc-fix-nodes-for-reclaim-in-fast-path.patch
 mm-vmpressure-fix-sending-wrong-events-on-underflow.patch
 mm-do-not-access-page-mapping-directly-on-page_endio.patch