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

index 34ff38b95e3fcd6f3a3f811e62ed01a9fec5da7c..132d51a551bf3605b174c56c421681b18b6bc6f8 100644 (file)
@@ -490,6 +490,9 @@ static int pci_8254_insn_read(comedi_device * dev, comedi_subdevice * s,
        unsigned int chan, chip, chipchan;
        unsigned long flags;
 
+       if (insn->n == 0)
+               return 0;
+
        chan = CR_CHAN(insn->chanspec); /* channel on subdevice */
        chip = chan / 3;                /* chip on subdevice */
        chipchan = chan - (3 * chip);   /* channel on chip on subdevice */
@@ -510,6 +513,9 @@ static int pci_8254_insn_write(comedi_device * dev, comedi_subdevice * s,
        unsigned int chan, chip, chipchan;
        unsigned long flags;
 
+       if (insn->n == 0)
+               return 0;
+
        chan = CR_CHAN(insn->chanspec); /* channel on subdevice */
        chip = chan / 3;                /* chip on subdevice */
        chipchan = chan - (3 * chip);   /* channel on chip on subdevice */