Messages in this thread | | | From | H Hartley Sweeten <> | Date | Thu, 19 Jul 2012 12:20:27 -0500 | Subject | RE: [PATCH 30/90] staging: comedi: amplc_dio200: store the pci_dev in the comedi_device |
| |
On Thursday, July 19, 2012 3:27 AM, Ian Abbott wrote: > On 2012-07-19 11:10, Ian Abbott wrote: >> On 2012-07-19 02:37, H Hartley Sweeten wrote: >>> Use the hw_dev pointer in the comedi_device struct to hold the >>> pci_dev instead of carrying it in the private data. >>> >>> Since the pci_dev is no longer held in the provate data, we can >>> also cleanup the detach a bit. Remove the IS_ENABLED() tests in >>> the detach. If the pci_dev is non NULL it's a PCI device otherwise >>> it's an ISA device. Using IS_ENABLED() to omit the code paths >>> makes the code a bit confusing and doesn't save much. >> >> No, you really need to check thisboard->bustype in the detach() because >> hw_dev might be NULL for a PCI board if the attach() failed. > > Actually, your patch wouldn't do any harm as dev->iobase would be 0. It > would just go through the "failed ISA device" path instead of the > "failed PCI device" path. It would be more robust to check > thisboard->bustype though.
Would this be cleaner:
If (dev->iobase) { If (pcidev) comedi_pci_disable(pcidev); else release_region(dev->iobase, DIO200_IO_SIZE); } If (pcidev) pci_dev_put(pcidev);
Same number of lines but the i/o disable/release and the put of the pcidev would then be distinctly separate.
Regards, Hartley
| |