Skip to content

Commit

Permalink
Staging: comedi: unlock on error in usbdux_ao_inttrig()
Browse files Browse the repository at this point in the history
If we had an invalid trignum (anything other than zero is invalid) then
we returned without unlocking.  I've modified this function to just have
one return point.

Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
  • Loading branch information
Dan Carpenter authored and Greg Kroah-Hartman committed Dec 8, 2011
1 parent 2d2c880 commit d6610a5
Showing 1 changed file with 9 additions and 6 deletions.
15 changes: 9 additions & 6 deletions drivers/staging/comedi/drivers/usbduxsigma.c
Original file line number Diff line number Diff line change
Expand Up @@ -1523,15 +1523,17 @@ static int usbdux_ao_inttrig(struct comedi_device *dev,
return -EFAULT;

down(&this_usbduxsub->sem);

if (!(this_usbduxsub->probed)) {
up(&this_usbduxsub->sem);
return -ENODEV;
ret = -ENODEV;
goto out;
}
if (trignum != 0) {
dev_err(&this_usbduxsub->interface->dev,
"comedi%d: usbdux_ao_inttrig: invalid trignum\n",
dev->minor);
return -EINVAL;
ret = -EINVAL;
goto out;
}
if (!(this_usbduxsub->ao_cmd_running)) {
this_usbduxsub->ao_cmd_running = 1;
Expand All @@ -1541,17 +1543,18 @@ static int usbdux_ao_inttrig(struct comedi_device *dev,
"comedi%d: usbdux_ao_inttrig: submitURB: "
"err=%d\n", dev->minor, ret);
this_usbduxsub->ao_cmd_running = 0;
up(&this_usbduxsub->sem);
return ret;
goto out;
}
s->async->inttrig = NULL;
} else {
dev_err(&this_usbduxsub->interface->dev,
"comedi%d: ao_inttrig but acqu is already running.\n",
dev->minor);
}
ret = 1;
out:
up(&this_usbduxsub->sem);
return 1;
return ret;
}

static int usbdux_ao_cmdtest(struct comedi_device *dev,
Expand Down

0 comments on commit d6610a5

Please sign in to comment.