From: Marco Stornelli Date: Sat, 5 Mar 2011 10:10:19 +0000 (+0100) Subject: Check for immutable/append flag in fallocate path X-Git-Tag: v3.0~1657^2~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=1ca551c6caae7b52178555cdedea6ca26444be46;p=platform%2Fkernel%2Flinux-amlogic.git Check for immutable/append flag in fallocate path In the fallocate path the kernel doesn't check for the immutable/append flag. It's possible to have a race condition in this scenario: an application open a file in read/write and it does something, meanwhile root set the immutable flag on the file, the application at that point can call fallocate with success. In addition, we don't allow to do any unreserve operation on an append only file but only the reserve one. Signed-off-by: Marco Stornelli Signed-off-by: Al Viro --- diff --git a/fs/open.c b/fs/open.c index 5a2c6eb..b47aab3 100644 --- a/fs/open.c +++ b/fs/open.c @@ -233,6 +233,14 @@ int do_fallocate(struct file *file, int mode, loff_t offset, loff_t len) if (!(file->f_mode & FMODE_WRITE)) return -EBADF; + + /* It's not possible punch hole on append only file */ + if (mode & FALLOC_FL_PUNCH_HOLE && IS_APPEND(inode)) + return -EPERM; + + if (IS_IMMUTABLE(inode)) + return -EPERM; + /* * Revalidate the write permissions, in case security policy has * changed since the files were opened.