aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFabian Frederick <fabf@skynet.be>2017-01-24 15:48:35 -0500
committerJan Kara <jack@suse.cz>2017-02-03 10:24:18 -0500
commita074faad512605a5bb5f7862e796485e6df572d2 (patch)
treeb4d6678f84f6c63a4c4e0c7ebffe1d714de411a8
parent782deb2eecc018bfa278f7453f367e01f5479ccb (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.c41
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
228out: 218 return 0;
229 return result;
230} 219}
231 220
232static int udf_release_file(struct inode *inode, struct file *filp) 221static int udf_release_file(struct inode *inode, struct file *filp)