Home Home > GIT Browse
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKernel Build Daemon <kbuild@suse.de>2018-10-28 07:01:04 +0100
committerKernel Build Daemon <kbuild@suse.de>2018-10-28 07:01:04 +0100
commitca04a08c67dbb8f700cdd1f362a829db907001bc (patch)
tree5a269d6378605cd2b0f5212a803fa303bc40fbc8
parente8917c59cedc7b89b2857e66d0e230bfd311e8dc (diff)
parentba4b09038d4480ac081f74af5a43e9e33cdc405a (diff)
Merge branch 'SLE12-SP3' into SLE12-SP3-AZURE
-rw-r--r--patches.fixes/xfs-don-t-fail-when-converting-shortform-attr-to-lon.patch51
-rw-r--r--series.conf2
2 files changed, 53 insertions, 0 deletions
diff --git a/patches.fixes/xfs-don-t-fail-when-converting-shortform-attr-to-lon.patch b/patches.fixes/xfs-don-t-fail-when-converting-shortform-attr-to-lon.patch
new file mode 100644
index 0000000000..f5f2d2add3
--- /dev/null
+++ b/patches.fixes/xfs-don-t-fail-when-converting-shortform-attr-to-lon.patch
@@ -0,0 +1,51 @@
+From: "Darrick J. Wong" <darrick.wong@oracle.com>
+Date: Tue, 17 Apr 2018 19:10:15 -0700
+Subject: [PATCH] xfs: don't fail when converting shortform attr to long form
+ during ATTR_REPLACE
+Patch-mainline: v4.17-rc4
+Git-commit: 7b38460dc8e4eafba06c78f8e37099d3b34d473c
+References: bsc#1105025, CVE-2018-18690
+
+Kanda Motohiro reported that expanding a tiny xattr into a large xattr
+fails on XFS because we remove the tiny xattr from a shortform fork and
+then try to re-add it after converting the fork to extents format having
+not removed the ATTR_REPLACE flag. This fails because the attr is no
+longer present, causing a fs shutdown.
+
+This is derived from the patch in his bug report, but we really
+shouldn't ignore a nonzero retval from the remove call.
+
+Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=199119
+Reported-by: kanda.motohiro@gmail.com
+Reviewed-by: Dave Chinner <dchinner@redhat.com>
+Reviewed-by: Christoph Hellwig <hch@lst.de>
+Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
+Acked-by: Anthony Iliopoulos <ailiopoulos@suse.com>
+
+---
+ fs/xfs/libxfs/xfs_attr.c | 9 ++++++++-
+ 1 file changed, 8 insertions(+), 1 deletion(-)
+
+diff --git a/fs/xfs/libxfs/xfs_attr.c b/fs/xfs/libxfs/xfs_attr.c
+index ce4a34a2751d..35a124400d60 100644
+--- a/fs/xfs/libxfs/xfs_attr.c
++++ b/fs/xfs/libxfs/xfs_attr.c
+@@ -511,7 +511,14 @@ xfs_attr_shortform_addname(xfs_da_args_t *args)
+ if (args->flags & ATTR_CREATE)
+ return retval;
+ retval = xfs_attr_shortform_remove(args);
+- ASSERT(retval == 0);
++ if (retval)
++ return retval;
++ /*
++ * Since we have removed the old attr, clear ATTR_REPLACE so
++ * that the leaf format add routine won't trip over the attr
++ * not being around.
++ */
++ args->flags &= ~ATTR_REPLACE;
+ }
+
+ if (args->namelen >= XFS_ATTR_SF_ENTSIZE_MAX ||
+--
+2.16.3
+
diff --git a/series.conf b/series.conf
index 9a098f1f22..a2c3dc0363 100644
--- a/series.conf
+++ b/series.conf
@@ -8903,6 +8903,8 @@
patches.fixes/0089-xfs-add-some-comments-to-xfs_iext_insert-xfs_iext_in.patch
patches.fixes/0090-xfs-add-comments-documenting-the-rebalance-algorithm.patch
+ patches.fixes/xfs-don-t-fail-when-converting-shortform-attr-to-lon.patch
+
########################################################
# cephfs
########################################################