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