Skip to content

Commit

Permalink
Check for immutable/append flag in fallocate path
Browse files Browse the repository at this point in the history
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 <marco.stornelli@gmail.com>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
  • Loading branch information
Marco Stornelli authored and Al Viro committed Mar 10, 2011
1 parent 991ac30 commit 1ca551c
Showing 1 changed file with 8 additions and 0 deletions.
8 changes: 8 additions & 0 deletions fs/open.c
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down

0 comments on commit 1ca551c

Please sign in to comment.