]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
4.9-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 23 May 2018 17:23:57 +0000 (19:23 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 23 May 2018 17:23:57 +0000 (19:23 +0200)
added patches:
ext2-fix-a-block-leak.patch

queue-4.9/ext2-fix-a-block-leak.patch [new file with mode: 0644]
queue-4.9/series

diff --git a/queue-4.9/ext2-fix-a-block-leak.patch b/queue-4.9/ext2-fix-a-block-leak.patch
new file mode 100644 (file)
index 0000000..517f0b4
--- /dev/null
@@ -0,0 +1,49 @@
+From 5aa1437d2d9a068c0334bd7c9dafa8ec4f97f13b Mon Sep 17 00:00:00 2001
+From: Al Viro <viro@zeniv.linux.org.uk>
+Date: Thu, 17 May 2018 17:18:30 -0400
+Subject: ext2: fix a block leak
+
+From: Al Viro <viro@zeniv.linux.org.uk>
+
+commit 5aa1437d2d9a068c0334bd7c9dafa8ec4f97f13b upstream.
+
+open file, unlink it, then use ioctl(2) to make it immutable or
+append only.  Now close it and watch the blocks *not* freed...
+
+Immutable/append-only checks belong in ->setattr().
+Note: the bug is old and backport to anything prior to 737f2e93b972
+("ext2: convert to use the new truncate convention") will need
+these checks lifted into ext2_setattr().
+
+Cc: stable@kernel.org
+Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ fs/ext2/inode.c |   10 ----------
+ 1 file changed, 10 deletions(-)
+
+--- a/fs/ext2/inode.c
++++ b/fs/ext2/inode.c
+@@ -1258,21 +1258,11 @@ do_indirects:
+ static void ext2_truncate_blocks(struct inode *inode, loff_t offset)
+ {
+-      /*
+-       * XXX: it seems like a bug here that we don't allow
+-       * IS_APPEND inode to have blocks-past-i_size trimmed off.
+-       * review and fix this.
+-       *
+-       * Also would be nice to be able to handle IO errors and such,
+-       * but that's probably too much to ask.
+-       */
+       if (!(S_ISREG(inode->i_mode) || S_ISDIR(inode->i_mode) ||
+           S_ISLNK(inode->i_mode)))
+               return;
+       if (ext2_inode_is_fast_symlink(inode))
+               return;
+-      if (IS_APPEND(inode) || IS_IMMUTABLE(inode))
+-              return;
+       dax_sem_down_write(EXT2_I(inode));
+       __ext2_truncate_blocks(inode, offset);
index e310589bc085ee8fe1d6d2161c230c31c9532e54..51cb515c4d68c2397eb00cdeb9bf047bc89e4c74 100644 (file)
@@ -5,3 +5,4 @@ sock_diag-fix-use-after-free-read-in-__sk_free.patch
 tcp-purge-write-queue-in-tcp_connect_init.patch
 vmxnet3-set-the-dma-mask-before-the-first-dma-map-operation.patch
 vmxnet3-use-dma-memory-barriers-where-required.patch
+ext2-fix-a-block-leak.patch