|
@@ -1066,8 +1066,10 @@ int ocfs2_ioctl_move_extents(struct file *filp, void __user *argp)
|
|
|
if (status)
|
|
|
return status;
|
|
|
|
|
|
- if ((!S_ISREG(inode->i_mode)) || !(filp->f_mode & FMODE_WRITE))
|
|
|
+ if ((!S_ISREG(inode->i_mode)) || !(filp->f_mode & FMODE_WRITE)) {
|
|
|
+ status = -EPERM;
|
|
|
goto out_drop;
|
|
|
+ }
|
|
|
|
|
|
if (inode->i_flags & (S_IMMUTABLE|S_APPEND)) {
|
|
|
status = -EPERM;
|
|
@@ -1089,8 +1091,10 @@ int ocfs2_ioctl_move_extents(struct file *filp, void __user *argp)
|
|
|
goto out_free;
|
|
|
}
|
|
|
|
|
|
- if (range.me_start > i_size_read(inode))
|
|
|
+ if (range.me_start > i_size_read(inode)) {
|
|
|
+ status = -EINVAL;
|
|
|
goto out_free;
|
|
|
+ }
|
|
|
|
|
|
if (range.me_start + range.me_len > i_size_read(inode))
|
|
|
range.me_len = i_size_read(inode) - range.me_start;
|