dt282x: don't access *data when insn->n == 0
authorIan Abbott <abbotti@mev.co.uk>
Thu, 15 Dec 2011 19:52:32 +0000 (19:52 +0000)
committerIan Abbott <abbotti@mev.co.uk>
Thu, 15 Dec 2011 19:52:32 +0000 (19:52 +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/dt282x.c

index 74f1f40ff924e86346190663513c54431212d695..dc703f7fa949dba8968aff35aa0b04fc80923cc6 100644 (file)
@@ -940,6 +940,9 @@ static int dt282x_ns_to_timer(int *nanosec, int round_mode)
 static int dt282x_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[CR_CHAN(insn->chanspec)];
 
        return 1;
@@ -951,6 +954,9 @@ static int dt282x_ao_insn_write(comedi_device * dev, comedi_subdevice * s,
        sampl_t d;
        unsigned int chan;
 
+       if (insn->n == 0)
+               return 0;
+
        chan = CR_CHAN(insn->chanspec);
        d = data[0];
        d &= (1 << boardtype.dabits) - 1;