Re: [PATCH 2/3 linux-next] udf: simplify udf_ioctl()

From: Jan Kara
Date: Fri Feb 03 2017 - 10:26:20 EST


On Tue 24-01-17 21:48:35, Fabian Frederick wrote:
> "out" label was only returning error code.
>
> Signed-off-by: Fabian Frederick <fabf@xxxxxxxxx>

Thanks. I've taken this patch and squashed patch 3 into this one.

Honza

> ---
> fs/udf/file.c | 39 +++++++++++++++------------------------
> 1 file changed, 15 insertions(+), 24 deletions(-)
>
> diff --git a/fs/udf/file.c b/fs/udf/file.c
> index d44b3cb..00931fa 100644
> --- a/fs/udf/file.c
> +++ b/fs/udf/file.c
> @@ -176,57 +176,48 @@ 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 = -VM_FAULT_SIGBUS;
> - goto out;
> + return -VM_FAULT_SIGBUS;
> }
>
> switch (cmd) {
> case UDF_GETVOLIDENT:
> if (copy_to_user((char __user *)arg,
> UDF_SB(inode->i_sb)->s_volume_ident, 32))
> - result = -EFAULT;
> + return -EFAULT;
> else
> - result = 0;
> - goto out;
> + 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,
> + return copy_to_user((char __user *)arg,
> UDF_I(inode)->i_ext.i_data,
> UDF_I(inode)->i_lenEAttr) ? -EFAULT : 0;
> - goto out;
> default:
> return -ENOIOCTLCMD;
> }
> -
> -out:
> - return result;
> }
>
> static int udf_release_file(struct inode *inode, struct file *filp)
> --
> 2.9.3
>
>
--
Jan Kara <jack@xxxxxxxx>
SUSE Labs, CR