staging: comedi: usbdux: fix the cmd->start_arg use
authorH Hartley Sweeten <hsweeten@visionengravers.com>
Thu, 17 Apr 2014 17:08:10 +0000 (10:08 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 22 Apr 2014 17:21:33 +0000 (10:21 -0700)
For all cmd->start_src values this driver trivially validates that the
cmd->start_arg is 0.

For a TRIG_INT source, the cmd->start_arg is actually the valid trig_num
that is used by the async (*inttrig) callback.

Refactor the (*inttrig) functions so that the cmd->start_arg is used to
check the trig_num instead of the open coded values.

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/usbdux.c

index 71db683098d67399b3c6918256e977af92ab6e85..ce528f8476009d14216e314cd286f97205ddc3c5 100644 (file)
@@ -692,15 +692,16 @@ static int receive_dux_commands(struct comedi_device *dev, unsigned int command)
 
 static int usbdux_ai_inttrig(struct comedi_device *dev,
                             struct comedi_subdevice *s,
-                            unsigned int trignum)
+                            unsigned int trig_num)
 {
        struct usbdux_private *devpriv = dev->private;
-       int ret = -EINVAL;
+       struct comedi_cmd *cmd = &s->async->cmd;
+       int ret;
 
-       down(&devpriv->sem);
+       if (trig_num != cmd->start_arg)
+               return -EINVAL;
 
-       if (trignum != 0)
-               goto ai_trig_exit;
+       down(&devpriv->sem);
 
        if (!devpriv->ai_cmd_running) {
                devpriv->ai_cmd_running = 1;
@@ -913,15 +914,16 @@ ao_write_exit:
 
 static int usbdux_ao_inttrig(struct comedi_device *dev,
                             struct comedi_subdevice *s,
-                            unsigned int trignum)
+                            unsigned int trig_num)
 {
        struct usbdux_private *devpriv = dev->private;
-       int ret = -EINVAL;
+       struct comedi_cmd *cmd = &s->async->cmd;
+       int ret;
 
-       down(&devpriv->sem);
+       if (trig_num != cmd->start_arg)
+               return -EINVAL;
 
-       if (trignum != 0)
-               goto ao_trig_exit;
+       down(&devpriv->sem);
 
        if (!devpriv->ao_cmd_running) {
                devpriv->ao_cmd_running = 1;