|
@@ -176,57 +176,46 @@ long udf_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
|
|
|
{
|
|
|
struct inode *inode = file_inode(filp);
|
|
|
long old_block, new_block;
|
|
|
- int result = -EINVAL;
|
|
|
+ int result;
|
|
|
|
|
|
if (inode_permission(inode, MAY_READ) != 0) {
|
|
|
udf_debug("no permission to access inode %lu\n", inode->i_ino);
|
|
|
- result = -EPERM;
|
|
|
- goto out;
|
|
|
+ return -EPERM;
|
|
|
}
|
|
|
|
|
|
if (!arg && ((cmd == UDF_GETVOLIDENT) || (cmd == UDF_GETEASIZE) ||
|
|
|
(cmd == UDF_RELOCATE_BLOCKS) || (cmd == UDF_GETEABLOCK))) {
|
|
|
udf_debug("invalid argument to udf_ioctl\n");
|
|
|
- result = -EINVAL;
|
|
|
- goto out;
|
|
|
+ return -EINVAL;
|
|
|
}
|
|
|
|
|
|
switch (cmd) {
|
|
|
case UDF_GETVOLIDENT:
|
|
|
if (copy_to_user((char __user *)arg,
|
|
|
UDF_SB(inode->i_sb)->s_volume_ident, 32))
|
|
|
- result = -EFAULT;
|
|
|
- else
|
|
|
- result = 0;
|
|
|
- goto out;
|
|
|
+ return -EFAULT;
|
|
|
+ return 0;
|
|
|
case UDF_RELOCATE_BLOCKS:
|
|
|
- if (!capable(CAP_SYS_ADMIN)) {
|
|
|
- result = -EPERM;
|
|
|
- goto out;
|
|
|
- }
|
|
|
- if (get_user(old_block, (long __user *)arg)) {
|
|
|
- result = -EFAULT;
|
|
|
- goto out;
|
|
|
- }
|
|
|
+ if (!capable(CAP_SYS_ADMIN))
|
|
|
+ return -EPERM;
|
|
|
+ if (get_user(old_block, (long __user *)arg))
|
|
|
+ return -EFAULT;
|
|
|
result = udf_relocate_blocks(inode->i_sb,
|
|
|
old_block, &new_block);
|
|
|
if (result == 0)
|
|
|
result = put_user(new_block, (long __user *)arg);
|
|
|
- goto out;
|
|
|
+ return result;
|
|
|
case UDF_GETEASIZE:
|
|
|
- result = put_user(UDF_I(inode)->i_lenEAttr, (int __user *)arg);
|
|
|
- goto out;
|
|
|
+ return put_user(UDF_I(inode)->i_lenEAttr, (int __user *)arg);
|
|
|
case UDF_GETEABLOCK:
|
|
|
- result = copy_to_user((char __user *)arg,
|
|
|
- UDF_I(inode)->i_ext.i_data,
|
|
|
- UDF_I(inode)->i_lenEAttr) ? -EFAULT : 0;
|
|
|
- goto out;
|
|
|
+ return copy_to_user((char __user *)arg,
|
|
|
+ UDF_I(inode)->i_ext.i_data,
|
|
|
+ UDF_I(inode)->i_lenEAttr) ? -EFAULT : 0;
|
|
|
default:
|
|
|
return -ENOIOCTLCMD;
|
|
|
}
|
|
|
|
|
|
-out:
|
|
|
- return result;
|
|
|
+ return 0;
|
|
|
}
|
|
|
|
|
|
static int udf_release_file(struct inode *inode, struct file *filp)
|