]> git.kernelconcepts.de Git - karo-tx-linux.git/commit
fs: move falloc collapse range check into the filesystem methods
authorLukas Czerner <lczerner@redhat.com>
Sat, 12 Apr 2014 13:56:41 +0000 (09:56 -0400)
committerTheodore Ts'o <tytso@mit.edu>
Sat, 12 Apr 2014 13:56:41 +0000 (09:56 -0400)
commit23fffa925ea2c9a2bcb1a4453e2c542635aa3545
treeada18ccc75346035bea8c684344fa2da6eac9f5b
parent8fc61d92630d1c96057a94c61e1643475045b25b
fs: move falloc collapse range check into the filesystem methods

Currently in do_fallocate in collapse range case we're checking
whether offset + len is not bigger than i_size.  However there is
nothing which would prevent i_size from changing so the check is
pointless.  It should be done in the file system itself and the file
system needs to make sure that i_size is not going to change.  The
i_size check for the other fallocate modes are also done in the
filesystems.

As it is now we can easily crash the kernel by having two processes
doing truncate and fallocate collapse range at the same time.  This
can be reproduced on ext4 and it is theoretically possible on xfs even
though I was not able to trigger it with this simple test.

This commit removes the check from do_fallocate and adds it to the
file system.

Signed-off-by: Lukas Czerner <lczerner@redhat.com>
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Acked-by: Dave Chinner <david@fromorbit.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
fs/ext4/extents.c
fs/open.c
fs/xfs/xfs_file.c