summaryrefslogtreecommitdiffstats
path: root/fs/open.c
diff options
context:
space:
mode:
authorGrant Likely <grant.likely@secretlab.ca>2011-01-14 12:09:49 -0700
committerGrant Likely <grant.likely@secretlab.ca>2011-01-14 12:09:49 -0700
commit42a9fa9957e369240936891c9a521ab671eed4e7 (patch)
tree7a9367594a367085c6a4a4433f687ec5c8dac8b7 /fs/open.c
parent5f35765d836befebdfabf745fdbf2e070c887fac (diff)
parentc289ef41431144a538b5fb5f94fc83c81b3020e2 (diff)
Merge branch 'devicetree/next' into spi/next
Diffstat (limited to 'fs/open.c')
-rw-r--r--fs/open.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/fs/open.c b/fs/open.c
index 4197b9ed023..5b6ef7e2859 100644
--- a/fs/open.c
+++ b/fs/open.c
@@ -223,7 +223,12 @@ int do_fallocate(struct file *file, int mode, loff_t offset, loff_t len)
return -EINVAL;
/* Return error if mode is not supported */
- if (mode && !(mode & FALLOC_FL_KEEP_SIZE))
+ if (mode & ~(FALLOC_FL_KEEP_SIZE | FALLOC_FL_PUNCH_HOLE))
+ return -EOPNOTSUPP;
+
+ /* Punch hole must have keep size set */
+ if ((mode & FALLOC_FL_PUNCH_HOLE) &&
+ !(mode & FALLOC_FL_KEEP_SIZE))
return -EOPNOTSUPP;
if (!(file->f_mode & FMODE_WRITE))