Commit 02918c00 authored by Ian Abbott's avatar Ian Abbott Committed by Greg Kroah-Hartman

staging: comedi: amplc_pc236: check bus type in detach routine

When detaching the device in pc236_detach() mirror the bus type checks
performed by pc236_attach().  The existing tests are safe but rely on
dev->iobase being 0 when comedi_to_pci_dev(dev) is NULL.
Signed-off-by: default avatarIan Abbott <abbotti@mev.co.uk>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 409861ff
...@@ -580,8 +580,8 @@ static int __devinit pc236_attach_pci(struct comedi_device *dev, ...@@ -580,8 +580,8 @@ static int __devinit pc236_attach_pci(struct comedi_device *dev,
static void pc236_detach(struct comedi_device *dev) static void pc236_detach(struct comedi_device *dev)
{ {
const struct pc236_board *thisboard = comedi_board(dev);
struct pc236_private *devpriv = dev->private; struct pc236_private *devpriv = dev->private;
struct pci_dev *pcidev = comedi_to_pci_dev(dev);
if (devpriv) if (devpriv)
pc236_intr_disable(dev); pc236_intr_disable(dev);
...@@ -589,13 +589,16 @@ static void pc236_detach(struct comedi_device *dev) ...@@ -589,13 +589,16 @@ static void pc236_detach(struct comedi_device *dev)
free_irq(dev->irq, dev); free_irq(dev->irq, dev);
if (dev->subdevices) if (dev->subdevices)
subdev_8255_cleanup(dev, dev->subdevices + 0); subdev_8255_cleanup(dev, dev->subdevices + 0);
if (is_isa_board(thisboard)) {
if (dev->iobase)
release_region(dev->iobase, PC236_IO_SIZE);
} else if (is_pci_board(thisboard)) {
struct pci_dev *pcidev = comedi_to_pci_dev(dev);
if (pcidev) { if (pcidev) {
if (dev->iobase) if (dev->iobase)
comedi_pci_disable(pcidev); comedi_pci_disable(pcidev);
pci_dev_put(pcidev); pci_dev_put(pcidev);
} else { }
if (dev->iobase)
release_region(dev->iobase, PC236_IO_SIZE);
} }
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment