staging: comedi: cb_pcidda: check for subdev_8255_init() failure
authorH Hartley Sweeten <hartleys@visionengravers.com>
Wed, 24 Oct 2012 23:31:14 +0000 (16:31 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 25 Oct 2012 02:35:49 +0000 (19:35 -0700)
The subdev_8255_init() can fail, make sure to check for it.

This board has two 8255 subdevices, one at iobase PCI bar2 and one
at iobase PCI bar2 + 4. Init the subdevices using a for() loop to
make the code a bit more concise.

Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com>
Cc: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/comedi/drivers/cb_pcidda.c

index 511401fbdeb7b474d0a2f943d64321af3f228190..8371fa2a1b7bcda68aa973c6dfef5bbef0232b9a 100644 (file)
@@ -520,11 +520,13 @@ static int cb_pcidda_attach_pci(struct comedi_device *dev,
        s->range_table = thisboard->ranges;
        s->insn_write = cb_pcidda_ao_winsn;
 
-       /*  two 8255 digital io subdevices */
-       s = &dev->subdevices[1];
-       subdev_8255_init(dev, s, NULL, iobase_8255);
-       s = &dev->subdevices[2];
-       subdev_8255_init(dev, s, NULL, iobase_8255 + PORT2A);
+       /* two 8255 digital io subdevices */
+       for (i = 0; i < 2; i++) {
+               s = &dev->subdevices[1 + i];
+               ret = subdev_8255_init(dev, s, NULL, iobase_8255 + (i * 4));
+               if (ret)
+                       return ret;
+       }
 
        /* Read the caldac eeprom data */
        for (i = 0; i < EEPROM_SIZE; i++)