mirror of
https://github.com/torvalds/linux.git
synced 2024-12-01 00:21:32 +00:00
RDMA/srp: Remove the srp_host.released completion
Move the kfree(host) calls into srp_release_dev(). Convert a device_unregister() call into a device_del() and a device_put() call. Remove the host->released completion object. This patch prepares for handling dev_set_name() failure in srp_add_port(). Link: https://lore.kernel.org/r/20220825213900.864587-3-bvanassche@acm.org Signed-off-by: Bart Van Assche <bvanassche@acm.org> Signed-off-by: Leon Romanovsky <leon@kernel.org>
This commit is contained in:
parent
c8e4c23976
commit
0766fcaa1e
@ -3178,7 +3178,7 @@ static void srp_release_dev(struct device *dev)
|
||||
struct srp_host *host =
|
||||
container_of(dev, struct srp_host, dev);
|
||||
|
||||
complete(&host->released);
|
||||
kfree(host);
|
||||
}
|
||||
|
||||
static struct class srp_class = {
|
||||
@ -3898,7 +3898,6 @@ static struct srp_host *srp_add_port(struct srp_device *device, u8 port)
|
||||
|
||||
INIT_LIST_HEAD(&host->target_list);
|
||||
spin_lock_init(&host->target_lock);
|
||||
init_completion(&host->released);
|
||||
mutex_init(&host->add_target_mutex);
|
||||
host->srp_dev = device;
|
||||
host->port = port;
|
||||
@ -3922,8 +3921,6 @@ static struct srp_host *srp_add_port(struct srp_device *device, u8 port)
|
||||
put_host:
|
||||
device_del(&host->dev);
|
||||
put_device(&host->dev);
|
||||
kfree(host);
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@ -4029,12 +4026,11 @@ static void srp_remove_one(struct ib_device *device, void *client_data)
|
||||
srp_dev = client_data;
|
||||
|
||||
list_for_each_entry_safe(host, tmp_host, &srp_dev->dev_list, list) {
|
||||
device_unregister(&host->dev);
|
||||
/*
|
||||
* Wait for the sysfs entry to go away, so that no new
|
||||
* target ports can be created.
|
||||
* Remove the add_target sysfs entry so that no new target ports
|
||||
* can be created.
|
||||
*/
|
||||
wait_for_completion(&host->released);
|
||||
device_del(&host->dev);
|
||||
|
||||
/*
|
||||
* Remove all target ports.
|
||||
@ -4052,7 +4048,7 @@ static void srp_remove_one(struct ib_device *device, void *client_data)
|
||||
*/
|
||||
flush_workqueue(srp_remove_wq);
|
||||
|
||||
kfree(host);
|
||||
put_device(&host->dev);
|
||||
}
|
||||
|
||||
ib_dealloc_pd(srp_dev->pd);
|
||||
|
@ -124,7 +124,6 @@ struct srp_host {
|
||||
struct device dev;
|
||||
struct list_head target_list;
|
||||
spinlock_t target_lock;
|
||||
struct completion released;
|
||||
struct list_head list;
|
||||
struct mutex add_target_mutex;
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user