]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
s390/vmcp: simplify vmcp_ioctl()
authorHeiko Carstens <heiko.carstens@de.ibm.com>
Mon, 7 Aug 2017 13:16:16 +0000 (15:16 +0200)
committerMartin Schwidefsky <schwidefsky@de.ibm.com>
Wed, 9 Aug 2017 13:09:39 +0000 (09:09 -0400)
vmcp_ioctl() has many different return statements and duplicates a lot
of mutex_unlock() calls. Simplify this so that only one return
statement and one mutex_unlock() call is left.

Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
drivers/s390/char/vmcp.c

index 30fd474c86b3889602aa1ccea9d5b37802369d44..0aa50afa5063a6431164e6e738d974c11e81fc40 100644 (file)
@@ -199,8 +199,8 @@ vmcp_write(struct file *file, const char __user *buff, size_t count,
 static long vmcp_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
 {
        struct vmcp_session *session;
+       int ret = -ENOTTY;
        int __user *argp;
-       int temp;
 
        session = file->private_data;
        if (is_compat_task())
@@ -211,28 +211,26 @@ static long vmcp_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
                return -ERESTARTSYS;
        switch (cmd) {
        case VMCP_GETCODE:
-               temp = session->resp_code;
-               mutex_unlock(&session->mutex);
-               return put_user(temp, argp);
+               ret = put_user(session->resp_code, argp);
+               break;
        case VMCP_SETBUF:
                vmcp_response_free(session);
-               temp = get_user(session->bufsize, argp);
-               if (temp)
+               ret = get_user(session->bufsize, argp);
+               if (ret)
                        session->bufsize = PAGE_SIZE;
                if (!session->bufsize || get_order(session->bufsize) > 8) {
                        session->bufsize = PAGE_SIZE;
-                       temp = -EINVAL;
+                       ret = -EINVAL;
                }
-               mutex_unlock(&session->mutex);
-               return temp;
+               break;
        case VMCP_GETSIZE:
-               temp = session->resp_size;
-               mutex_unlock(&session->mutex);
-               return put_user(temp, argp);
+               ret = put_user(session->resp_size, argp);
+               break;
        default:
-               mutex_unlock(&session->mutex);
-               return -ENOTTY;
+               break;
        }
+       mutex_unlock(&session->mutex);
+       return ret;
 }
 
 static const struct file_operations vmcp_fops = {