staging: comedi: usbduxfast: use a common exit path in ai (*do_cmd)
authorH Hartley Sweeten <hsweeten@visionengravers.com>
Mon, 24 Aug 2015 17:14:02 +0000 (10:14 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 13 Sep 2015 01:24:25 +0000 (18:24 -0700)
For aesthetics, use 'goto' and a common exit point in this function so
that the up of the semaphore is not overlooked.

Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com>
Reviewed-by: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/comedi/drivers/usbduxfast.c

index ae775964c7d58fe51a9bf3c699954fa035cfdee6..60f1c5e15a6a6c2b214058e79a92da69e24a5b69 100644 (file)
@@ -470,14 +470,12 @@ static int usbduxfast_ai_cmd(struct comedi_device *dev,
        struct comedi_cmd *cmd = &s->async->cmd;
        unsigned int rngmask = 0xff;
        int j, ret;
-       int result;
        long steps, steps_tmp;
 
        down(&devpriv->sem);
        if (devpriv->ai_cmd_running) {
-               dev_err(dev->class_dev, "ai_cmd not possible\n");
-               up(&devpriv->sem);
-               return -EBUSY;
+               ret = -EBUSY;
+               goto cmd_exit;
        }
 
        /*
@@ -734,11 +732,9 @@ static int usbduxfast_ai_cmd(struct comedi_device *dev,
        }
 
        /* 0 means that the AD commands are sent */
-       result = usbduxfast_send_cmd(dev, SENDADCOMMANDS);
-       if (result < 0) {
-               up(&devpriv->sem);
-               return result;
-       }
+       ret = usbduxfast_send_cmd(dev, SENDADCOMMANDS);
+       if (ret < 0)
+               goto cmd_exit;
 
        if ((cmd->start_src == TRIG_NOW) || (cmd->start_src == TRIG_EXT)) {
                /* enable this acquisition operation */
@@ -747,16 +743,17 @@ static int usbduxfast_ai_cmd(struct comedi_device *dev,
                if (ret < 0) {
                        devpriv->ai_cmd_running = 0;
                        /* fixme: unlink here?? */
-                       up(&devpriv->sem);
-                       return ret;
+                       goto cmd_exit;
                }
                s->async->inttrig = NULL;
        } else {        /* TRIG_INT */
                s->async->inttrig = usbduxfast_ai_inttrig;
        }
+
+cmd_exit:
        up(&devpriv->sem);
 
-       return 0;
+       return ret;
 }
 
 /*