mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-06 16:49:22 +00:00
RDMA/core: make ib_device.add method optional
ib_clients can indeed fill .add to NULL, but then they will not see any device removal notifications. The reason is that that ib_register_client and ib_register_device checked existence of .add before adding the creating a corresponding client_data and adding it to the list. Simple condition reverse fixes the issue. Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de> Reviewed-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Sagi Grimberg <sagi@grimberg.me> Reviewed-by: Leon Romanovsky <leonro@mellanox.com> Signed-off-by: Doug Ledford <dledford@redhat.com>
This commit is contained in:
parent
836daee2df
commit
b059e2108d
1 changed files with 2 additions and 2 deletions
|
@ -489,7 +489,7 @@ int ib_register_device(struct ib_device *device,
|
|||
device->reg_state = IB_DEV_REGISTERED;
|
||||
|
||||
list_for_each_entry(client, &client_list, list)
|
||||
if (client->add && !add_client_context(device, client))
|
||||
if (!add_client_context(device, client) && client->add)
|
||||
client->add(device);
|
||||
|
||||
down_write(&lists_rwsem);
|
||||
|
@ -577,7 +577,7 @@ int ib_register_client(struct ib_client *client)
|
|||
mutex_lock(&device_mutex);
|
||||
|
||||
list_for_each_entry(device, &device_list, core_list)
|
||||
if (client->add && !add_client_context(device, client))
|
||||
if (!add_client_context(device, client) && client->add)
|
||||
client->add(device);
|
||||
|
||||
down_write(&lists_rwsem);
|
||||
|
|
Loading…
Reference in a new issue