diff options
author | Andreas Wellving <andreas.wellving@enea.com> | 2019-07-10 14:27:38 +0200 |
---|---|---|
committer | Adrian Stratulat <adrian.stratulat@enea.com> | 2019-07-12 10:39:19 +0200 |
commit | bfbf05844a901a063b37f1b32785df899ed415ab (patch) | |
tree | 6e05613e48ab250b95c2213b175b7e853361901c | |
parent | e81d96e0451ac3cd902d7cfa6812bb399fed7ad9 (diff) | |
download | enea-kernel-cache-bfbf05844a901a063b37f1b32785df899ed415ab.tar.gz |
xfs: CVE-2018-18690
xfs: don't fail when converting shortform attr to long form during
ATTR_REPLACE
References:
https://nvd.nist.gov/vuln/detail/CVE-2018-18690
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=linux-4.9.y&id=4ec44e98ab08c704d0ff1a35a21a0682a5562a27
Change-Id: Ic58d7bf2b31d45dcfa68a0d092b22d02d8065fdc
Signed-off-by: Andreas Wellving <andreas.wellving@enea.com>
-rw-r--r-- | patches/cve/4.9.x.scc | 3 | ||||
-rw-r--r-- | patches/cve/CVE-2018-18690-xfs-don-t-fail-when-converting-shortform-attr-to-lon.patch | 55 |
2 files changed, 58 insertions, 0 deletions
diff --git a/patches/cve/4.9.x.scc b/patches/cve/4.9.x.scc index 8e6776b..9665d3f 100644 --- a/patches/cve/4.9.x.scc +++ b/patches/cve/4.9.x.scc | |||
@@ -57,3 +57,6 @@ patch CVE-2018-13099-f2fs-fix-to-do-sanity-check-with-reserved-blkaddr-of.patch | |||
57 | 57 | ||
58 | #CVEs fixed in 4.9.138: | 58 | #CVEs fixed in 4.9.138: |
59 | patch CVE-2018-16871-nfsd-COPY-and-CLONE-operations-require-the-saved-fil.patch | 59 | patch CVE-2018-16871-nfsd-COPY-and-CLONE-operations-require-the-saved-fil.patch |
60 | |||
61 | #CVEs fixed in 4.9.144: | ||
62 | patch CVE-2018-18690-xfs-don-t-fail-when-converting-shortform-attr-to-lon.patch | ||
diff --git a/patches/cve/CVE-2018-18690-xfs-don-t-fail-when-converting-shortform-attr-to-lon.patch b/patches/cve/CVE-2018-18690-xfs-don-t-fail-when-converting-shortform-attr-to-lon.patch new file mode 100644 index 0000000..ca65d82 --- /dev/null +++ b/patches/cve/CVE-2018-18690-xfs-don-t-fail-when-converting-shortform-attr-to-lon.patch | |||
@@ -0,0 +1,55 @@ | |||
1 | From 4ec44e98ab08c704d0ff1a35a21a0682a5562a27 Mon Sep 17 00:00:00 2001 | ||
2 | From: "Darrick J. Wong" <darrick.wong@oracle.com> | ||
3 | Date: Tue, 17 Apr 2018 19:10:15 -0700 | ||
4 | Subject: [PATCH] xfs: don't fail when converting shortform attr to long form | ||
5 | during ATTR_REPLACE | ||
6 | |||
7 | commit 7b38460dc8e4eafba06c78f8e37099d3b34d473c upstream. | ||
8 | |||
9 | Kanda Motohiro reported that expanding a tiny xattr into a large xattr | ||
10 | fails on XFS because we remove the tiny xattr from a shortform fork and | ||
11 | then try to re-add it after converting the fork to extents format having | ||
12 | not removed the ATTR_REPLACE flag. This fails because the attr is no | ||
13 | longer present, causing a fs shutdown. | ||
14 | |||
15 | This is derived from the patch in his bug report, but we really | ||
16 | shouldn't ignore a nonzero retval from the remove call. | ||
17 | |||
18 | CVE: CVE-2018-18690 | ||
19 | Upstream-Status: Backport [https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=linux-4.9.y&id=4ec44e98ab08c704d0ff1a35a21a0682a5562a27] | ||
20 | |||
21 | Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=199119 | ||
22 | Reported-by: kanda.motohiro@gmail.com | ||
23 | Reviewed-by: Dave Chinner <dchinner@redhat.com> | ||
24 | Reviewed-by: Christoph Hellwig <hch@lst.de> | ||
25 | Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com> | ||
26 | Signed-off-by: Ben Hutchings <ben.hutchings@codethink.co.uk> | ||
27 | Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> | ||
28 | Signed-off-by: Andreas Wellving <andreas.wellving@enea.com> | ||
29 | --- | ||
30 | fs/xfs/libxfs/xfs_attr.c | 9 ++++++++- | ||
31 | 1 file changed, 8 insertions(+), 1 deletion(-) | ||
32 | |||
33 | diff --git a/fs/xfs/libxfs/xfs_attr.c b/fs/xfs/libxfs/xfs_attr.c | ||
34 | index 6622d46ddec3..9687208c676f 100644 | ||
35 | --- a/fs/xfs/libxfs/xfs_attr.c | ||
36 | +++ b/fs/xfs/libxfs/xfs_attr.c | ||
37 | @@ -487,7 +487,14 @@ xfs_attr_shortform_addname(xfs_da_args_t *args) | ||
38 | if (args->flags & ATTR_CREATE) | ||
39 | return retval; | ||
40 | retval = xfs_attr_shortform_remove(args); | ||
41 | - ASSERT(retval == 0); | ||
42 | + if (retval) | ||
43 | + return retval; | ||
44 | + /* | ||
45 | + * Since we have removed the old attr, clear ATTR_REPLACE so | ||
46 | + * that the leaf format add routine won't trip over the attr | ||
47 | + * not being around. | ||
48 | + */ | ||
49 | + args->flags &= ~ATTR_REPLACE; | ||
50 | } | ||
51 | |||
52 | if (args->namelen >= XFS_ATTR_SF_ENTSIZE_MAX || | ||
53 | -- | ||
54 | 2.20.1 | ||
55 | |||