Commit 2fb4f4ea authored by Parav Pandit's avatar Parav Pandit Committed by Jason Gunthorpe

IB/core: Fix missing RDMA cgroups release in case of failure to register device

During IB device registration process, if query_device() fails or if
ib_core fails to registers sysfs entries, rdma cgroup cleanup is
skipped.

Cc: <stable@vger.kernel.org> # v4.2+
Fixes: 4be3a4fa ("IB/core: Fix kernel crash during fail to initialize device")
Reviewed-by: default avatarDaniel Jurgens <danielj@mellanox.com>
Signed-off-by: default avatarParav Pandit <parav@mellanox.com>
Signed-off-by: default avatarLeon Romanovsky <leon@kernel.org>
Signed-off-by: default avatarJason Gunthorpe <jgg@mellanox.com>
parent 65389322
...@@ -536,14 +536,14 @@ int ib_register_device(struct ib_device *device, ...@@ -536,14 +536,14 @@ int ib_register_device(struct ib_device *device,
ret = device->query_device(device, &device->attrs, &uhw); ret = device->query_device(device, &device->attrs, &uhw);
if (ret) { if (ret) {
pr_warn("Couldn't query the device attributes\n"); pr_warn("Couldn't query the device attributes\n");
goto cache_cleanup; goto cg_cleanup;
} }
ret = ib_device_register_sysfs(device, port_callback); ret = ib_device_register_sysfs(device, port_callback);
if (ret) { if (ret) {
pr_warn("Couldn't register device %s with driver model\n", pr_warn("Couldn't register device %s with driver model\n",
device->name); device->name);
goto cache_cleanup; goto cg_cleanup;
} }
device->reg_state = IB_DEV_REGISTERED; device->reg_state = IB_DEV_REGISTERED;
...@@ -559,6 +559,8 @@ int ib_register_device(struct ib_device *device, ...@@ -559,6 +559,8 @@ int ib_register_device(struct ib_device *device,
mutex_unlock(&device_mutex); mutex_unlock(&device_mutex);
return 0; return 0;
cg_cleanup:
ib_device_unregister_rdmacg(device);
cache_cleanup: cache_cleanup:
ib_cache_cleanup_one(device); ib_cache_cleanup_one(device);
ib_cache_release_one(device); ib_cache_release_one(device);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment