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

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

diff --git a/queue-3.18/ext2-fix-a-block-leak.patch b/queue-3.18/ext2-fix-a-block-leak.patch
new file mode 100644 (file)
index 0000000..f0d24cf
--- /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
+@@ -1169,21 +1169,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;
+       __ext2_truncate_blocks(inode, offset);
+ }
index 70d8de75da0c34426701013b33e78622e7bea726..3a06bf7550d06398560275a0cd5310cb58ed3a77 100644 (file)
@@ -37,3 +37,4 @@ tick-broadcast-use-for_each_cpu-specially-on-up-kernels.patch
 arm-8772-1-kprobes-prohibit-kprobes-on-get_user-functions.patch
 net-test-tailroom-before-appending-to-linear-skb.patch
 tcp-purge-write-queue-in-tcp_connect_init.patch
+ext2-fix-a-block-leak.patch