From: Ian Abbott Date: Mon, 14 Jan 2008 18:05:35 +0000 (+0000) Subject: In comedi_do_insn: X-Git-Tag: v0_7_76~7 X-Git-Url: http://git.tremily.us/gitweb.cgi?a=commitdiff_plain;h=0e9e8f592ea29e181275eb625a439b0313120029;p=comedi.git In comedi_do_insn: For INSN_WAIT, make sure insn->n is exactly 1. For subdevice instructions, if subdevice is unused, return -EIO. For subdevice instructions, if chanspec is wrong, return -EINVAL. --- diff --git a/comedi/kcomedilib/kcomedilib_main.c b/comedi/kcomedilib/kcomedilib_main.c index 815fd23d..bcb14f4d 100644 --- a/comedi/kcomedilib/kcomedilib_main.c +++ b/comedi/kcomedilib/kcomedilib_main.c @@ -196,7 +196,7 @@ int comedi_do_insn(comedi_t * d, comedi_insn * insn) } case INSN_WAIT: /* XXX isn't the value supposed to be nanosecs? */ - if (insn->n < 1 || insn->data[0] >= 100) { + if (insn->n != 1 || insn->data[0] >= 100) { ret = -EINVAL; break; } @@ -242,7 +242,7 @@ int comedi_do_insn(comedi_t * d, comedi_insn * insn) if (s->type == COMEDI_SUBD_UNUSED) { rt_printk("%d not useable subdevice\n", insn->subdev); - /* XXX no return value is set! ret = ? */ + ret = -EIO; goto error; } @@ -250,7 +250,7 @@ int comedi_do_insn(comedi_t * d, comedi_insn * insn) if ((ret = check_chanlist(s, 1, &insn->chanspec)) < 0) { rt_printk("bad chanspec\n"); - /* XXX no return value is set! ret = ? */ + ret = -EINVAL; goto error; }