Commit b059e210 authored by Sagi Grimberg's avatar Sagi Grimberg Committed by Doug Ledford
Browse files

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: default avatarJohannes Thumshirn <jthumshirn@suse.de>
Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
Signed-off-by: default avatarSagi Grimberg <sagi@grimberg.me>
Reviewed-by: default avatarLeon Romanovsky <leonro@mellanox.com>
Signed-off-by: default avatarDoug Ledford <dledford@redhat.com>
parent 836daee2
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -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);