Commit e5cb2f94 authored by H Hartley Sweeten's avatar H Hartley Sweeten Committed by Greg Kroah-Hartman

staging: comedi: usbdux: tidy up usbdux_ai_inttrig()

Rename the local variable used for the private data pointer to the
comedi "norm".

Remove the unnecessary sanity check of the private data pointer. This
function can only be called is the private data was allocated during
the attach.

Tidy up the exit path using goto to ensure that the semaphore is
released.

Return -EBUSY if an ai command is already running.
Signed-off-by: default avatarH Hartley Sweeten <hsweeten@visionengravers.com>
Reviewed-by: default avatarIan Abbott <abbotti@mev.co.uk>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 9c922a90
...@@ -852,31 +852,32 @@ static int receive_dux_commands(struct comedi_device *dev, int command) ...@@ -852,31 +852,32 @@ static int receive_dux_commands(struct comedi_device *dev, int command)
} }
static int usbdux_ai_inttrig(struct comedi_device *dev, static int usbdux_ai_inttrig(struct comedi_device *dev,
struct comedi_subdevice *s, unsigned int trignum) struct comedi_subdevice *s,
unsigned int trignum)
{ {
int ret; struct usbdux_private *devpriv = dev->private;
struct usbdux_private *this_usbduxsub = dev->private; int ret = -EINVAL;
if (!this_usbduxsub)
return -EFAULT;
down(&this_usbduxsub->sem); down(&devpriv->sem);
if (trignum != 0) { if (trignum != 0)
up(&this_usbduxsub->sem); goto ai_trig_exit;
return -EINVAL;
} if (!devpriv->ai_cmd_running) {
if (!(this_usbduxsub->ai_cmd_running)) { devpriv->ai_cmd_running = 1;
this_usbduxsub->ai_cmd_running = 1;
ret = usbduxsub_submit_inurbs(dev); ret = usbduxsub_submit_inurbs(dev);
if (ret < 0) { if (ret < 0) {
this_usbduxsub->ai_cmd_running = 0; devpriv->ai_cmd_running = 0;
up(&this_usbduxsub->sem); goto ai_trig_exit;
return ret;
} }
s->async->inttrig = NULL; s->async->inttrig = NULL;
} else {
ret = -EBUSY;
} }
up(&this_usbduxsub->sem);
return 1; ai_trig_exit:
up(&devpriv->sem);
return ret;
} }
static int usbdux_ai_cmd(struct comedi_device *dev, struct comedi_subdevice *s) static int usbdux_ai_cmd(struct comedi_device *dev, struct comedi_subdevice *s)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment