]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
4.20-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 11 Feb 2019 13:44:41 +0000 (14:44 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 11 Feb 2019 13:44:41 +0000 (14:44 +0100)
added patches:
cacheinfo-keep-the-old-value-if-of_property_read_u32-fails.patch
nfsd-fix-error-return-values-for-nfsd4_clone_file_range.patch

queue-4.20/cacheinfo-keep-the-old-value-if-of_property_read_u32-fails.patch [new file with mode: 0644]
queue-4.20/nfsd-fix-error-return-values-for-nfsd4_clone_file_range.patch [new file with mode: 0644]
queue-4.20/series

diff --git a/queue-4.20/cacheinfo-keep-the-old-value-if-of_property_read_u32-fails.patch b/queue-4.20/cacheinfo-keep-the-old-value-if-of_property_read_u32-fails.patch
new file mode 100644 (file)
index 0000000..d059394
--- /dev/null
@@ -0,0 +1,47 @@
+From 3a34c986324c07dde32903f7bb262e6138e77c2a Mon Sep 17 00:00:00 2001
+From: Huacai Chen <chenhc@lemote.com>
+Date: Wed, 19 Dec 2018 16:16:03 +0800
+Subject: cacheinfo: Keep the old value if of_property_read_u32 fails
+
+From: Huacai Chen <chenhc@lemote.com>
+
+commit 3a34c986324c07dde32903f7bb262e6138e77c2a upstream.
+
+Commit 448a5a552f336bd7b847b1951 ("drivers: base: cacheinfo: use OF
+property_read_u32 instead of get_property,read_number") makes cache
+size and number_of_sets be 0 if DT doesn't provide there values. I
+think this is unreasonable so make them keep the old values, which is
+the same as old kernels.
+
+Fixes: 448a5a552f33 ("drivers: base: cacheinfo: use OF property_read_u32 instead of get_property,read_number")
+Cc: stable@vger.kernel.org
+Signed-off-by: Huacai Chen <chenhc@lemote.com>
+Reviewed-by: Sudeep Holla <sudeep.holla@arm.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/base/cacheinfo.c |    6 ++----
+ 1 file changed, 2 insertions(+), 4 deletions(-)
+
+--- a/drivers/base/cacheinfo.c
++++ b/drivers/base/cacheinfo.c
+@@ -79,8 +79,7 @@ static void cache_size(struct cacheinfo
+       ct_idx = get_cacheinfo_idx(this_leaf->type);
+       propname = cache_type_info[ct_idx].size_prop;
+-      if (of_property_read_u32(np, propname, &this_leaf->size))
+-              this_leaf->size = 0;
++      of_property_read_u32(np, propname, &this_leaf->size);
+ }
+ /* not cache_line_size() because that's a macro in include/linux/cache.h */
+@@ -114,8 +113,7 @@ static void cache_nr_sets(struct cachein
+       ct_idx = get_cacheinfo_idx(this_leaf->type);
+       propname = cache_type_info[ct_idx].nr_sets_prop;
+-      if (of_property_read_u32(np, propname, &this_leaf->number_of_sets))
+-              this_leaf->number_of_sets = 0;
++      of_property_read_u32(np, propname, &this_leaf->number_of_sets);
+ }
+ static void cache_associativity(struct cacheinfo *this_leaf)
diff --git a/queue-4.20/nfsd-fix-error-return-values-for-nfsd4_clone_file_range.patch b/queue-4.20/nfsd-fix-error-return-values-for-nfsd4_clone_file_range.patch
new file mode 100644 (file)
index 0000000..539dff1
--- /dev/null
@@ -0,0 +1,39 @@
+From e3fdc89ca47ef34dfb6fd5101fec084c3dba5486 Mon Sep 17 00:00:00 2001
+From: Trond Myklebust <trondmy@gmail.com>
+Date: Mon, 21 Jan 2019 15:58:38 -0500
+Subject: nfsd: Fix error return values for nfsd4_clone_file_range()
+
+From: Trond Myklebust <trondmy@gmail.com>
+
+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>
+
+---
+ fs/nfsd/vfs.c |    6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+--- a/fs/nfsd/vfs.c
++++ b/fs/nfsd/vfs.c
+@@ -544,9 +544,11 @@ __be32 nfsd4_clone_file_range(struct fil
+       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,
index 69d039aa770f9fb173dc512b0dde4844ef070110..5cb3824aac87dc5babb1f9feb61ee478172c5d8d 100644 (file)
@@ -348,3 +348,5 @@ perf-tests-evsel-tp-sched-fix-bitwise-operator.patch
 serial-fix-race-between-flush_to_ldisc-and-tty_open.patch
 serial-8250_pci-make-pci-class-test-non-fatal.patch
 serial-sh-sci-do-not-free-irqs-that-have-already-been-freed.patch
+cacheinfo-keep-the-old-value-if-of_property_read_u32-fails.patch
+nfsd-fix-error-return-values-for-nfsd4_clone_file_range.patch