| From 2fb4f4eadd180a50112618dd9c5fef7fc50d4f08 Mon Sep 17 00:00:00 2001 |
| From: Parav Pandit <parav@mellanox.com> |
| Date: Sun, 25 Feb 2018 13:39:56 +0200 |
| Subject: IB/core: Fix missing RDMA cgroups release in case of failure to register device |
| |
| From: Parav Pandit <parav@mellanox.com> |
| |
| commit 2fb4f4eadd180a50112618dd9c5fef7fc50d4f08 upstream. |
| |
| 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: 4be3a4fa51f4 ("IB/core: Fix kernel crash during fail to initialize device") |
| Reviewed-by: Daniel Jurgens <danielj@mellanox.com> |
| Signed-off-by: Parav Pandit <parav@mellanox.com> |
| Signed-off-by: Leon Romanovsky <leon@kernel.org> |
| Signed-off-by: Jason Gunthorpe <jgg@mellanox.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/infiniband/core/device.c | 6 ++++-- |
| 1 file changed, 4 insertions(+), 2 deletions(-) |
| |
| --- a/drivers/infiniband/core/device.c |
| +++ b/drivers/infiniband/core/device.c |
| @@ -534,14 +534,14 @@ int ib_register_device(struct ib_device |
| ret = device->query_device(device, &device->attrs, &uhw); |
| if (ret) { |
| pr_warn("Couldn't query the device attributes\n"); |
| - goto cache_cleanup; |
| + goto cg_cleanup; |
| } |
| |
| ret = ib_device_register_sysfs(device, port_callback); |
| if (ret) { |
| pr_warn("Couldn't register device %s with driver model\n", |
| device->name); |
| - goto cache_cleanup; |
| + goto cg_cleanup; |
| } |
| |
| device->reg_state = IB_DEV_REGISTERED; |
| @@ -557,6 +557,8 @@ int ib_register_device(struct ib_device |
| mutex_unlock(&device_mutex); |
| return 0; |
| |
| +cg_cleanup: |
| + ib_device_unregister_rdmacg(device); |
| cache_cleanup: |
| ib_cache_cleanup_one(device); |
| ib_cache_release_one(device); |