Message ID | 20170124204836.22323-2-fabf@skynet.be (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Tue 24-01-17 21:48:35, Fabian Frederick wrote: > "out" label was only returning error code. > > Signed-off-by: Fabian Frederick <fabf@skynet.be> 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 > >
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)
"out" label was only returning error code. Signed-off-by: Fabian Frederick <fabf@skynet.be> --- fs/udf/file.c | 39 +++++++++++++++------------------------ 1 file changed, 15 insertions(+), 24 deletions(-)