diff options
author | Fabian Frederick <fabf@skynet.be> | 2017-01-24 15:48:35 -0500 |
---|---|---|
committer | Jan Kara <jack@suse.cz> | 2017-02-03 10:24:18 -0500 |
commit | a074faad512605a5bb5f7862e796485e6df572d2 (patch) | |
tree | b4d6678f84f6c63a4c4e0c7ebffe1d714de411a8 | |
parent | 782deb2eecc018bfa278f7453f367e01f5479ccb (diff) |
udf: simplify udf_ioctl()
"out" label was only returning error code.
Signed-off-by: Fabian Frederick <fabf@skynet.be>
Signed-off-by: Jan Kara <jack@suse.cz>
-rw-r--r-- | fs/udf/file.c | 41 |
1 files changed, 15 insertions, 26 deletions
diff --git a/fs/udf/file.c b/fs/udf/file.c index 87551b77933a..e04cc0cdca9d 100644 --- a/fs/udf/file.c +++ b/fs/udf/file.c | |||
@@ -176,57 +176,46 @@ long udf_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) | |||
176 | { | 176 | { |
177 | struct inode *inode = file_inode(filp); | 177 | struct inode *inode = file_inode(filp); |
178 | long old_block, new_block; | 178 | long old_block, new_block; |
179 | int result = -EINVAL; | 179 | int result; |
180 | 180 | ||
181 | if (inode_permission(inode, MAY_READ) != 0) { | 181 | if (inode_permission(inode, MAY_READ) != 0) { |
182 | udf_debug("no permission to access inode %lu\n", inode->i_ino); | 182 | udf_debug("no permission to access inode %lu\n", inode->i_ino); |
183 | result = -EPERM; | 183 | return -EPERM; |
184 | goto out; | ||
185 | } | 184 | } |
186 | 185 | ||
187 | if (!arg && ((cmd == UDF_GETVOLIDENT) || (cmd == UDF_GETEASIZE) || | 186 | if (!arg && ((cmd == UDF_GETVOLIDENT) || (cmd == UDF_GETEASIZE) || |
188 | (cmd == UDF_RELOCATE_BLOCKS) || (cmd == UDF_GETEABLOCK))) { | 187 | (cmd == UDF_RELOCATE_BLOCKS) || (cmd == UDF_GETEABLOCK))) { |
189 | udf_debug("invalid argument to udf_ioctl\n"); | 188 | udf_debug("invalid argument to udf_ioctl\n"); |
190 | result = -EINVAL; | 189 | return -EINVAL; |
191 | goto out; | ||
192 | } | 190 | } |
193 | 191 | ||
194 | switch (cmd) { | 192 | switch (cmd) { |
195 | case UDF_GETVOLIDENT: | 193 | case UDF_GETVOLIDENT: |
196 | if (copy_to_user((char __user *)arg, | 194 | if (copy_to_user((char __user *)arg, |
197 | UDF_SB(inode->i_sb)->s_volume_ident, 32)) | 195 | UDF_SB(inode->i_sb)->s_volume_ident, 32)) |
198 | result = -EFAULT; | 196 | return -EFAULT; |
199 | else | 197 | return 0; |
200 | result = 0; | ||
201 | goto out; | ||
202 | case UDF_RELOCATE_BLOCKS: | 198 | case UDF_RELOCATE_BLOCKS: |
203 | if (!capable(CAP_SYS_ADMIN)) { | 199 | if (!capable(CAP_SYS_ADMIN)) |
204 | result = -EPERM; | 200 | return -EPERM; |
205 | goto out; | 201 | if (get_user(old_block, (long __user *)arg)) |
206 | } | 202 | return -EFAULT; |
207 | if (get_user(old_block, (long __user *)arg)) { | ||
208 | result = -EFAULT; | ||
209 | goto out; | ||
210 | } | ||
211 | result = udf_relocate_blocks(inode->i_sb, | 203 | result = udf_relocate_blocks(inode->i_sb, |
212 | old_block, &new_block); | 204 | old_block, &new_block); |
213 | if (result == 0) | 205 | if (result == 0) |
214 | result = put_user(new_block, (long __user *)arg); | 206 | result = put_user(new_block, (long __user *)arg); |
215 | goto out; | 207 | return result; |
216 | case UDF_GETEASIZE: | 208 | case UDF_GETEASIZE: |
217 | result = put_user(UDF_I(inode)->i_lenEAttr, (int __user *)arg); | 209 | return put_user(UDF_I(inode)->i_lenEAttr, (int __user *)arg); |
218 | goto out; | ||
219 | case UDF_GETEABLOCK: | 210 | case UDF_GETEABLOCK: |
220 | result = copy_to_user((char __user *)arg, | 211 | return copy_to_user((char __user *)arg, |
221 | UDF_I(inode)->i_ext.i_data, | 212 | UDF_I(inode)->i_ext.i_data, |
222 | UDF_I(inode)->i_lenEAttr) ? -EFAULT : 0; | 213 | UDF_I(inode)->i_lenEAttr) ? -EFAULT : 0; |
223 | goto out; | ||
224 | default: | 214 | default: |
225 | return -ENOIOCTLCMD; | 215 | return -ENOIOCTLCMD; |
226 | } | 216 | } |
227 | 217 | ||
228 | out: | 218 | return 0; |
229 | return result; | ||
230 | } | 219 | } |
231 | 220 | ||
232 | static int udf_release_file(struct inode *inode, struct file *filp) | 221 | static int udf_release_file(struct inode *inode, struct file *filp) |