mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2025-01-18 18:36:18 +07:00
RDMA/core: Use simpler device_del() instead of device_unregister()
Instead of holding extra reference using get_device() that device_unregister() releases, simplify it as below. device_add() balances with device_del(). device_initialize() balances with put_device(), always via ib_dealloc_device(). Signed-off-by: Parav Pandit <parav@mellanox.com> Signed-off-by: Leon Romanovsky <leonro@mellanox.com> Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
This commit is contained in:
parent
cfe876d8e6
commit
e155755e53
@ -369,6 +369,7 @@ void ib_dealloc_device(struct ib_device *device)
|
|||||||
WARN_ON(!xa_empty(&device->client_data));
|
WARN_ON(!xa_empty(&device->client_data));
|
||||||
WARN_ON(refcount_read(&device->refcount));
|
WARN_ON(refcount_read(&device->refcount));
|
||||||
rdma_restrack_clean(device);
|
rdma_restrack_clean(device);
|
||||||
|
/* Balances with device_initialize */
|
||||||
put_device(&device->dev);
|
put_device(&device->dev);
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(ib_dealloc_device);
|
EXPORT_SYMBOL(ib_dealloc_device);
|
||||||
|
@ -1351,15 +1351,12 @@ int ib_device_register_sysfs(struct ib_device *device)
|
|||||||
|
|
||||||
void ib_device_unregister_sysfs(struct ib_device *device)
|
void ib_device_unregister_sysfs(struct ib_device *device)
|
||||||
{
|
{
|
||||||
/* Hold device until ib_dealloc_device() */
|
|
||||||
get_device(&device->dev);
|
|
||||||
|
|
||||||
free_port_list_attributes(device);
|
free_port_list_attributes(device);
|
||||||
|
|
||||||
if (device->hw_stats) {
|
if (device->hw_stats) {
|
||||||
kfree(device->hw_stats);
|
kfree(device->hw_stats);
|
||||||
free_hsag(&device->dev.kobj, device->hw_stats_ag);
|
free_hsag(&device->dev.kobj, device->hw_stats_ag);
|
||||||
}
|
}
|
||||||
|
/* Balances with device_add */
|
||||||
device_unregister(&device->dev);
|
device_del(&device->dev);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user