[PATCH 10/19] staging: comedi: cb_pcidda: check for subdev_8255_init() failure

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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@xxxxxxxxxxxxxxxxxxx>
Cc: Ian Abbott <abbotti@xxxxxxxxx>
Cc: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>
---
 drivers/staging/comedi/drivers/cb_pcidda.c | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/drivers/staging/comedi/drivers/cb_pcidda.c b/drivers/staging/comedi/drivers/cb_pcidda.c
index 511401f..8371fa2a 100644
--- a/drivers/staging/comedi/drivers/cb_pcidda.c
+++ b/drivers/staging/comedi/drivers/cb_pcidda.c
@@ -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++)
-- 
1.7.11

_______________________________________________
devel mailing list
devel@xxxxxxxxxxxxxxxxxxxxxx
http://driverdev.linuxdriverproject.org/mailman/listinfo/devel


[Index of Archives]     [Linux Driver Backports]     [DMA Engine]     [Linux GPIO]     [Linux SPI]     [Video for Linux]     [Linux USB Devel]     [Linux Coverity]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux