mirror of https://gitee.com/openkylin/linux.git
staging: comedi: amplc_pci230: Fix PCI ref count
When attaching a PCI device manually via the comedi driver `attach` hook (`pci230_attach()`) (called by the comedi core for the `COMEDI_DEVCONFIG` ioctl), its reference count is incremented in the `for_each_pci_dev` loop (in `pci230_find_pci_dev()`). It is decremented when the `detach` hook (`pci230_detach()`) is called to detach the device. However, when the PCI device is attached automatically via the `attach_pci` hook (`pci230_attach_pci()`, called at probe time via `comedi_pci_auto_config()`) it's reference count is not incremented so there will be an unmatched decrement when detaching the device. Increment the PCI device reference count in `pci230_attach_pci()` to correct the mismatch. Once support for manual configuration has been removed from this driver, the calls to `pci_dev_get()` and `pci_dev_put()` can be removed. Signed-off-by: Ian Abbott <abbotti@mev.co.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
a0234ade63
commit
4375e61ed2
|
@ -2925,6 +2925,13 @@ static int __devinit pci230_attach_pci(struct comedi_device *dev,
|
|||
"amplc_pci230: BUG! cannot determine board type!\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
/*
|
||||
* Need to 'get' the PCI device to match the 'put' in pci230_detach().
|
||||
* TODO: Remove the pci_dev_get() and matching pci_dev_put() once
|
||||
* support for manual attachment of PCI devices via pci230_attach()
|
||||
* has been removed.
|
||||
*/
|
||||
pci_dev_get(pci_dev);
|
||||
return pci230_attach_common(dev, pci_dev);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue