From: Marco Stornelli <marco.stornelli@gmail.com>
To: Linux Kernel <linux-kernel@vger.kernel.org>
Cc: sedat.dilek@gmail.com, Sedat Dilek <sedat.dilek@googlemail.com>,
Linux FS Devel <linux-fsdevel@vger.kernel.org>
Subject: [PATCH v3][RESEND] Check for immutable/append flag in fallocate path
Date: Sat, 05 Mar 2011 11:10:19 +0100 [thread overview]
Message-ID: <4D720C0B.1050300@gmail.com> (raw)
In-Reply-To: <AANLkTinyK0G=tfZob4u7XBj7Gna3FbZnLrqswz2oajwn@mail.gmail.com>
From: Marco Stornelli <marco.stornelli@gmail.com>
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>
---
ChangeLog:
v3: Modified do_fallocate instead of every single fs
v2: Added the check for append-only file for XFS
v1: First draft
--- linux-2.6.38-rc7/fs/open.c.orig 2011-03-01 22:55:12.000000000 +0100
+++ linux-2.6.38-rc7/fs/open.c 2011-03-04 15:28:43.000000000 +0100
@@ -233,6 +233,14 @@ int do_fallocate(struct file *file, int
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.
next prev parent reply other threads:[~2011-03-05 10:10 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-02-21 8:26 [PATCH] Check for immutable flag in fallocate path Marco Stornelli
2011-02-21 12:46 ` Christoph Hellwig
2011-02-21 16:50 ` Marco Stornelli
2011-02-27 22:49 ` Ted Ts'o
2011-02-28 7:53 ` Marco Stornelli
2011-03-02 8:19 ` Marco Stornelli
2011-02-26 14:59 ` Marco Stornelli
2011-03-03 8:42 ` [PATCH v2] " Marco Stornelli
2011-03-03 21:39 ` Dave Chinner
2011-03-04 8:17 ` Marco Stornelli
2011-03-04 12:18 ` Marco Stornelli
2011-03-14 10:24 ` Christoph Hellwig
2011-03-14 10:40 ` Marco Stornelli
2011-03-05 9:37 ` [PATCH v3] Check for immutable/append " Marco Stornelli
2011-03-05 10:00 ` Sedat Dilek
2011-03-05 10:10 ` Marco Stornelli [this message]
2011-03-09 19:42 ` [PATCH v3][RESEND] " Marco Stornelli
2011-03-09 21:27 ` Greg KH
2011-03-10 12:03 ` Marco Stornelli
2011-03-08 5:11 ` [PATCH v3] " Dave Chinner
2011-03-08 5:38 ` Andreas Dilger
2011-03-08 7:35 ` Marco Stornelli
2011-03-09 1:30 ` Dave Chinner
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4D720C0B.1050300@gmail.com \
--to=marco.stornelli@gmail.com \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=sedat.dilek@gmail.com \
--cc=sedat.dilek@googlemail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).