aboutsummaryrefslogtreecommitdiffstats
path: root/debian/patches/bugfix/all/ext4-avoid-running-out-of-journal-credits-when-appen.patch
diff options
context:
space:
mode:
Diffstat (limited to 'debian/patches/bugfix/all/ext4-avoid-running-out-of-journal-credits-when-appen.patch')
-rw-r--r--debian/patches/bugfix/all/ext4-avoid-running-out-of-journal-credits-when-appen.patch120
1 files changed, 0 insertions, 120 deletions
diff --git a/debian/patches/bugfix/all/ext4-avoid-running-out-of-journal-credits-when-appen.patch b/debian/patches/bugfix/all/ext4-avoid-running-out-of-journal-credits-when-appen.patch
deleted file mode 100644
index 911fcac747a9..000000000000
--- a/debian/patches/bugfix/all/ext4-avoid-running-out-of-journal-credits-when-appen.patch
+++ /dev/null
@@ -1,120 +0,0 @@
-From: Theodore Ts'o <tytso@mit.edu>
-Date: Sat, 16 Jun 2018 23:41:59 -0400
-Subject: ext4: avoid running out of journal credits when appending to an
- inline file
-Origin: https://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4.git/commit?id=3886651521995071fab29401094e675b6ebfdc8c
-Bug-Debian-Security: https://security-tracker.debian.org/tracker/CVE-2018-10883
-
-Use a separate journal transaction if it turns out that we need to
-convert an inline file to use an data block. Otherwise we could end
-up failing due to not having journal credits.
-
-This addresses CVE-2018-10883.
-
-https://bugzilla.kernel.org/show_bug.cgi?id=200071
-
-Signed-off-by: Theodore Ts'o <tytso@mit.edu>
----
- fs/ext4/ext4.h | 3 ---
- fs/ext4/inline.c | 38 +-------------------------------------
- fs/ext4/xattr.c | 19 ++-----------------
- 3 files changed, 3 insertions(+), 57 deletions(-)
-
---- a/fs/ext4/ext4.h
-+++ b/fs/ext4/ext4.h
-@@ -3005,9 +3005,6 @@ extern int ext4_inline_data_fiemap(struc
- struct iomap;
- extern int ext4_inline_data_iomap(struct inode *inode, struct iomap *iomap);
-
--extern int ext4_try_to_evict_inline_data(handle_t *handle,
-- struct inode *inode,
-- int needed);
- extern int ext4_inline_data_truncate(struct inode *inode, int *has_inline);
-
- extern int ext4_convert_inline_data(struct inode *inode);
---- a/fs/ext4/inline.c
-+++ b/fs/ext4/inline.c
-@@ -887,11 +887,11 @@ retry_journal:
- flags |= AOP_FLAG_NOFS;
-
- if (ret == -ENOSPC) {
-+ ext4_journal_stop(handle);
- ret = ext4_da_convert_inline_data_to_extent(mapping,
- inode,
- flags,
- fsdata);
-- ext4_journal_stop(handle);
- if (ret == -ENOSPC &&
- ext4_should_retry_alloc(inode->i_sb, &retries))
- goto retry_journal;
-@@ -1891,42 +1891,6 @@ out:
- return (error < 0 ? error : 0);
- }
-
--/*
-- * Called during xattr set, and if we can sparse space 'needed',
-- * just create the extent tree evict the data to the outer block.
-- *
-- * We use jbd2 instead of page cache to move data to the 1st block
-- * so that the whole transaction can be committed as a whole and
-- * the data isn't lost because of the delayed page cache write.
-- */
--int ext4_try_to_evict_inline_data(handle_t *handle,
-- struct inode *inode,
-- int needed)
--{
-- int error;
-- struct ext4_xattr_entry *entry;
-- struct ext4_inode *raw_inode;
-- struct ext4_iloc iloc;
--
-- error = ext4_get_inode_loc(inode, &iloc);
-- if (error)
-- return error;
--
-- raw_inode = ext4_raw_inode(&iloc);
-- entry = (struct ext4_xattr_entry *)((void *)raw_inode +
-- EXT4_I(inode)->i_inline_off);
-- if (EXT4_XATTR_LEN(entry->e_name_len) +
-- EXT4_XATTR_SIZE(le32_to_cpu(entry->e_value_size)) < needed) {
-- error = -ENOSPC;
-- goto out;
-- }
--
-- error = ext4_convert_inline_data_nolock(handle, inode, &iloc);
--out:
-- brelse(iloc.bh);
-- return error;
--}
--
- int ext4_inline_data_truncate(struct inode *inode, int *has_inline)
- {
- handle_t *handle;
---- a/fs/ext4/xattr.c
-+++ b/fs/ext4/xattr.c
-@@ -2212,23 +2212,8 @@ int ext4_xattr_ibody_inline_set(handle_t
- if (EXT4_I(inode)->i_extra_isize == 0)
- return -ENOSPC;
- error = ext4_xattr_set_entry(i, s, handle, inode, false /* is_block */);
-- if (error) {
-- if (error == -ENOSPC &&
-- ext4_has_inline_data(inode)) {
-- error = ext4_try_to_evict_inline_data(handle, inode,
-- EXT4_XATTR_LEN(strlen(i->name) +
-- EXT4_XATTR_SIZE(i->value_len)));
-- if (error)
-- return error;
-- error = ext4_xattr_ibody_find(inode, i, is);
-- if (error)
-- return error;
-- error = ext4_xattr_set_entry(i, s, handle, inode,
-- false /* is_block */);
-- }
-- if (error)
-- return error;
-- }
-+ if (error)
-+ return error;
- header = IHDR(inode, ext4_raw_inode(&is->iloc));
- if (!IS_LAST_ENTRY(s->first)) {
- header->h_magic = cpu_to_le32(EXT4_XATTR_MAGIC);