forked from MIrrors/gasket-driver
staging: gasket: core: factor out generic device remove code from PCI
Separate code for generic parts of gasket device removal sequence from the PCI device removal code, in prep for non-PCI devices later. Signed-off-by: Todd Poynor <toddpoynor@google.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Alex Van Damme
parent
16c146bc73
commit
a74e602f32
@@ -1461,6 +1461,14 @@ free_gasket_dev:
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void __gasket_remove_device(struct gasket_internal_desc *internal_desc,
|
||||||
|
struct gasket_dev *gasket_dev)
|
||||||
|
{
|
||||||
|
gasket_sysfs_remove_mapping(gasket_dev->dev_info.device);
|
||||||
|
device_destroy(internal_desc->class, gasket_dev->dev_info.devt);
|
||||||
|
gasket_free_dev(gasket_dev);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Add PCI gasket device.
|
* Add PCI gasket device.
|
||||||
*
|
*
|
||||||
@@ -1515,9 +1523,7 @@ int gasket_pci_add_device(struct pci_dev *pci_dev,
|
|||||||
|
|
||||||
cleanup_pci:
|
cleanup_pci:
|
||||||
gasket_cleanup_pci(gasket_dev);
|
gasket_cleanup_pci(gasket_dev);
|
||||||
gasket_sysfs_remove_mapping(gasket_dev->dev_info.device);
|
__gasket_remove_device(internal_desc, gasket_dev);
|
||||||
device_destroy(internal_desc->class, gasket_dev->dev_info.devt);
|
|
||||||
gasket_free_dev(gasket_dev);
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(gasket_pci_add_device);
|
EXPORT_SYMBOL(gasket_pci_add_device);
|
||||||
@@ -1528,7 +1534,6 @@ void gasket_pci_remove_device(struct pci_dev *pci_dev)
|
|||||||
int i;
|
int i;
|
||||||
struct gasket_internal_desc *internal_desc;
|
struct gasket_internal_desc *internal_desc;
|
||||||
struct gasket_dev *gasket_dev = NULL;
|
struct gasket_dev *gasket_dev = NULL;
|
||||||
const struct gasket_driver_desc *driver_desc;
|
|
||||||
/* Find the device desc. */
|
/* Find the device desc. */
|
||||||
mutex_lock(&g_mutex);
|
mutex_lock(&g_mutex);
|
||||||
internal_desc = lookup_internal_desc(pci_dev);
|
internal_desc = lookup_internal_desc(pci_dev);
|
||||||
@@ -1538,8 +1543,6 @@ void gasket_pci_remove_device(struct pci_dev *pci_dev)
|
|||||||
}
|
}
|
||||||
mutex_unlock(&g_mutex);
|
mutex_unlock(&g_mutex);
|
||||||
|
|
||||||
driver_desc = internal_desc->driver_desc;
|
|
||||||
|
|
||||||
/* Now find the specific device */
|
/* Now find the specific device */
|
||||||
mutex_lock(&internal_desc->mutex);
|
mutex_lock(&internal_desc->mutex);
|
||||||
for (i = 0; i < GASKET_DEV_MAX; i++) {
|
for (i = 0; i < GASKET_DEV_MAX; i++) {
|
||||||
@@ -1558,10 +1561,7 @@ void gasket_pci_remove_device(struct pci_dev *pci_dev)
|
|||||||
internal_desc->driver_desc->name);
|
internal_desc->driver_desc->name);
|
||||||
|
|
||||||
gasket_cleanup_pci(gasket_dev);
|
gasket_cleanup_pci(gasket_dev);
|
||||||
|
__gasket_remove_device(internal_desc, gasket_dev);
|
||||||
gasket_sysfs_remove_mapping(gasket_dev->dev_info.device);
|
|
||||||
device_destroy(internal_desc->class, gasket_dev->dev_info.devt);
|
|
||||||
gasket_free_dev(gasket_dev);
|
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(gasket_pci_remove_device);
|
EXPORT_SYMBOL(gasket_pci_remove_device);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user