dt2801: don't access *data when insn->n == 0
authorIan Abbott <abbotti@mev.co.uk>
Thu, 15 Dec 2011 20:01:53 +0000 (20:01 +0000)
committerIan Abbott <abbotti@mev.co.uk>
Thu, 15 Dec 2011 20:01:53 +0000 (20:01 +0000)
Due to recent change to do_insnlist_ioctl() and do_insn_ioctl(), the
'data' pointer will be NULL when insn->n == 0.  Do not access *data
in this case.

Signed-off-by: Ian Abbott <abbotti@mev.co.uk>
comedi/drivers/dt2801.c

index 15a53eb40ff89b7aadb0828fbd056df09140c5b1..b39550e01607c0306f09227a9e5298e9029cd11f 100644 (file)
@@ -630,6 +630,9 @@ static int dt2801_ai_insn_read(comedi_device * dev, comedi_subdevice * s,
 static int dt2801_ao_insn_read(comedi_device * dev, comedi_subdevice * s,
        comedi_insn * insn, lsampl_t * data)
 {
+       if (insn->n == 0)
+               return 0;
+
        data[0] = devpriv->ao_readback[CR_CHAN(insn->chanspec)];
 
        return 1;
@@ -638,6 +641,9 @@ static int dt2801_ao_insn_read(comedi_device * dev, comedi_subdevice * s,
 static int dt2801_ao_insn_write(comedi_device * dev, comedi_subdevice * s,
        comedi_insn * insn, lsampl_t * data)
 {
+       if (insn->n == 0)
+               return 0;
+
        dt2801_writecmd(dev, DT_C_WRITE_DAIM);
        dt2801_writedata(dev, CR_CHAN(insn->chanspec));
        dt2801_writedata2(dev, data[0]);