diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c index 1e1f640bf1c5..6a2b5fcbe679 100644 --- a/fs/f2fs/file.c +++ b/fs/f2fs/file.c @@ -2108,6 +2108,9 @@ static int f2fs_ioc_start_atomic_write(struct file *filp) loff_t isize; int ret; + if (!(filp->f_mode & FMODE_WRITE)) + return -EBADF; + if (!inode_owner_or_capable(mnt_userns, inode)) return -EACCES; @@ -2209,6 +2212,9 @@ static int f2fs_ioc_commit_atomic_write(struct file *filp) struct user_namespace *mnt_userns = file_mnt_user_ns(filp); int ret; + if (!(filp->f_mode & FMODE_WRITE)) + return -EBADF; + if (!inode_owner_or_capable(mnt_userns, inode)) return -EACCES; @@ -2241,6 +2247,9 @@ static int f2fs_ioc_abort_atomic_write(struct file *filp) struct user_namespace *mnt_userns = file_mnt_user_ns(filp); int ret; + if (!(filp->f_mode & FMODE_WRITE)) + return -EBADF; + if (!inode_owner_or_capable(mnt_userns, inode)) return -EACCES;