From db1876ff1e7c86dc97d1721ce2e5e0df71072acb Mon Sep 17 00:00:00 2001 From: H Hartley Sweeten Date: Mon, 24 Aug 2015 10:13:55 -0700 Subject: [PATCH] staging: comedi: usbduxfast: only chanlist of 1, 2, 3, or 16 are supported The analog input (*do_cmd) only supports channel lists of 1, 2, 3, or 16 channels. Add a check for this to usbduxfast_ai_check_chanlist() and remove the check from usbduxfast_ai_cmd(). Signed-off-by: H Hartley Sweeten Reviewed-by: Ian Abbott Signed-off-by: Greg Kroah-Hartman --- drivers/staging/comedi/drivers/usbduxfast.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/drivers/staging/comedi/drivers/usbduxfast.c b/drivers/staging/comedi/drivers/usbduxfast.c index 16b28faa2ec2..a8635b1659a4 100644 --- a/drivers/staging/comedi/drivers/usbduxfast.c +++ b/drivers/staging/comedi/drivers/usbduxfast.c @@ -339,6 +339,11 @@ static int usbduxfast_ai_check_chanlist(struct comedi_device *dev, unsigned int gain0 = CR_RANGE(cmd->chanlist[0]); int i; + if (cmd->chanlist_len > 3 && cmd->chanlist_len != 16) { + dev_err(dev->class_dev, "unsupported combination of channels\n"); + return -EINVAL; + } + for (i = 0; i < cmd->chanlist_len; ++i) { unsigned int chan = CR_CHAN(cmd->chanlist[i]); unsigned int gain = CR_RANGE(cmd->chanlist[i]); @@ -779,11 +784,6 @@ static int usbduxfast_ai_cmd(struct comedi_device *dev, usbduxfast_cmd_data(dev, 4, 0x09, 0x01, rngmask, 0xff); break; - - default: - dev_err(dev->class_dev, "unsupported combination of channels\n"); - up(&devpriv->sem); - return -EFAULT; } /* 0 means that the AD commands are sent */ -- 2.30.2