Home Home > GIT Browse > stable
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJiri Slaby <jslaby@suse.cz>2019-02-12 22:18:26 +0100
committerJiri Slaby <jslaby@suse.cz>2019-02-12 22:21:34 +0100
commit836982bbedbd48492aa516774db8935d5443a5a2 (patch)
treea9d4c663b994d03822a983e72d2d714ec6797667
parent4cde04542bb0f907eb800883835f3ae35289c68e (diff)
nfsd: Fix error return values for nfsd4_clone_file_range()
-rw-r--r--patches.kernel.org/4.20.8-343-nfsd-Fix-error-return-values-for-nfsd4_clone_f.patch44
-rw-r--r--series.conf1
2 files changed, 45 insertions, 0 deletions
diff --git a/patches.kernel.org/4.20.8-343-nfsd-Fix-error-return-values-for-nfsd4_clone_f.patch b/patches.kernel.org/4.20.8-343-nfsd-Fix-error-return-values-for-nfsd4_clone_f.patch
new file mode 100644
index 0000000000..242c3bc1e0
--- /dev/null
+++ b/patches.kernel.org/4.20.8-343-nfsd-Fix-error-return-values-for-nfsd4_clone_f.patch
@@ -0,0 +1,44 @@
+From: Trond Myklebust <trondmy@gmail.com>
+Date: Mon, 21 Jan 2019 15:58:38 -0500
+Subject: [PATCH] nfsd: Fix error return values for nfsd4_clone_file_range()
+References: bnc#1012628
+Patch-mainline: 4.20.8
+Git-commit: e3fdc89ca47ef34dfb6fd5101fec084c3dba5486
+
+commit e3fdc89ca47ef34dfb6fd5101fec084c3dba5486 upstream.
+
+If the parameter 'count' is non-zero, nfsd4_clone_file_range() will
+currently clobber all errors returned by vfs_clone_file_range() and
+replace them with EINVAL.
+
+Fixes: 42ec3d4c0218 ("vfs: make remap_file_range functions take and...")
+Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
+Cc: stable@vger.kernel.org # v4.20+
+Signed-off-by: J. Bruce Fields <bfields@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+Signed-off-by: Jiri Slaby <jslaby@suse.cz>
+---
+ fs/nfsd/vfs.c | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/fs/nfsd/vfs.c b/fs/nfsd/vfs.c
+index eb67098117b4..6f424e3a3981 100644
+--- a/fs/nfsd/vfs.c
++++ b/fs/nfsd/vfs.c
+@@ -544,9 +544,11 @@ __be32 nfsd4_clone_file_range(struct file *src, u64 src_pos, struct file *dst,
+ loff_t cloned;
+
+ cloned = vfs_clone_file_range(src, src_pos, dst, dst_pos, count, 0);
++ if (cloned < 0)
++ return nfserrno(cloned);
+ if (count && cloned != count)
+- cloned = -EINVAL;
+- return nfserrno(cloned < 0 ? cloned : 0);
++ return nfserrno(-EINVAL);
++ return 0;
+ }
+
+ ssize_t nfsd_copy_file_range(struct file *src, u64 src_pos, struct file *dst,
+--
+2.20.1
+
diff --git a/series.conf b/series.conf
index 9289fd71e1..3649b03173 100644
--- a/series.conf
+++ b/series.conf
@@ -1079,6 +1079,7 @@
patches.kernel.org/4.20.8-340-serial-8250_pci-Make-PCI-class-test-non-fatal.patch
patches.kernel.org/4.20.8-341-serial-sh-sci-Do-not-free-irqs-that-have-alrea.patch
patches.kernel.org/4.20.8-342-cacheinfo-Keep-the-old-value-if-of_property_re.patch
+ patches.kernel.org/4.20.8-343-nfsd-Fix-error-return-values-for-nfsd4_clone_f.patch
########################################################
# Build fixes that apply to the vanilla kernel too.