diff options
| -rw-r--r-- | fs/open.c | 8 |
1 files changed, 8 insertions, 0 deletions
| @@ -233,6 +233,14 @@ int do_fallocate(struct file *file, int mode, loff_t offset, loff_t len) | |||
| 233 | 233 | ||
| 234 | if (!(file->f_mode & FMODE_WRITE)) | 234 | if (!(file->f_mode & FMODE_WRITE)) |
| 235 | return -EBADF; | 235 | return -EBADF; |
| 236 | |||
| 237 | /* It's not possible punch hole on append only file */ | ||
| 238 | if (mode & FALLOC_FL_PUNCH_HOLE && IS_APPEND(inode)) | ||
| 239 | return -EPERM; | ||
| 240 | |||
| 241 | if (IS_IMMUTABLE(inode)) | ||
| 242 | return -EPERM; | ||
| 243 | |||
| 236 | /* | 244 | /* |
| 237 | * Revalidate the write permissions, in case security policy has | 245 | * Revalidate the write permissions, in case security policy has |
| 238 | * changed since the files were opened. | 246 | * changed since the files were opened. |
