struct fsl_mc_resource *resource;
        struct fsl_mc_device *mc_bus_dev = &mc_bus->mc_dev;
        int error = -EINVAL;
-       bool mutex_locked = false;
 
        if (WARN_ON(pool_type < 0 || pool_type >= FSL_MC_NUM_POOL_TYPES))
                goto out;
                goto out;
 
        mutex_lock(&res_pool->mutex);
-       mutex_locked = true;
 
        if (WARN_ON(res_pool->max_count < 0))
-               goto out;
+               goto out_unlock;
        if (WARN_ON(res_pool->free_count < 0 ||
                    res_pool->free_count > res_pool->max_count))
-               goto out;
+               goto out_unlock;
 
        resource = devm_kzalloc(&mc_bus_dev->dev, sizeof(*resource),
                                GFP_KERNEL);
                error = -ENOMEM;
                dev_err(&mc_bus_dev->dev,
                        "Failed to allocate memory for fsl_mc_resource\n");
-               goto out;
+               goto out_unlock;
        }
 
        resource->type = pool_type;
        res_pool->free_count++;
        res_pool->max_count++;
        error = 0;
+out_unlock:
+       mutex_unlock(&res_pool->mutex);
 out:
-       if (mutex_locked)
-               mutex_unlock(&res_pool->mutex);
-
        return error;
 }
 
        struct fsl_mc_resource_pool *res_pool;
        struct fsl_mc_resource *resource;
        int error = -EINVAL;
-       bool mutex_locked = false;
 
        if (WARN_ON(!FSL_MC_IS_ALLOCATABLE(mc_dev->obj_desc.type)))
                goto out;
                goto out;
 
        mutex_lock(&res_pool->mutex);
-       mutex_locked = true;
 
        if (WARN_ON(res_pool->max_count <= 0))
-               goto out;
+               goto out_unlock;
        if (WARN_ON(res_pool->free_count <= 0 ||
                    res_pool->free_count > res_pool->max_count))
-               goto out;
+               goto out_unlock;
 
        /*
         * If the device is currently allocated, its resource is not
                dev_err(&mc_bus_dev->dev,
                        "Device %s cannot be removed from resource pool\n",
                        dev_name(&mc_dev->dev));
-               goto out;
+               goto out_unlock;
        }
 
        list_del(&resource->node);
        devm_kfree(&mc_bus_dev->dev, resource);
        mc_dev->resource = NULL;
        error = 0;
+out_unlock:
+       mutex_unlock(&res_pool->mutex);
 out:
-       if (mutex_locked)
-               mutex_unlock(&res_pool->mutex);
-
        return error;
 }
 
        struct fsl_mc_resource *resource;
        struct fsl_mc_device *mc_bus_dev = &mc_bus->mc_dev;
        int error = -EINVAL;
-       bool mutex_locked = false;
 
        BUILD_BUG_ON(ARRAY_SIZE(fsl_mc_pool_type_strings) !=
                     FSL_MC_NUM_POOL_TYPES);
 
        *new_resource = NULL;
        if (WARN_ON(pool_type < 0 || pool_type >= FSL_MC_NUM_POOL_TYPES))
-               goto error;
+               goto out;
 
        res_pool = &mc_bus->resource_pools[pool_type];
        if (WARN_ON(res_pool->mc_bus != mc_bus))
-               goto error;
+               goto out;
 
        mutex_lock(&res_pool->mutex);
-       mutex_locked = true;
        resource = list_first_entry_or_null(&res_pool->free_list,
                                            struct fsl_mc_resource, node);
 
                dev_err(&mc_bus_dev->dev,
                        "No more resources of type %s left\n",
                        fsl_mc_pool_type_strings[pool_type]);
-               goto error;
+               goto out_unlock;
        }
 
        if (WARN_ON(resource->type != pool_type))
-               goto error;
+               goto out_unlock;
        if (WARN_ON(resource->parent_pool != res_pool))
-               goto error;
+               goto out_unlock;
        if (WARN_ON(res_pool->free_count <= 0 ||
                    res_pool->free_count > res_pool->max_count))
-               goto error;
+               goto out_unlock;
 
        list_del(&resource->node);
        INIT_LIST_HEAD(&resource->node);
 
        res_pool->free_count--;
+       error = 0;
+out_unlock:
        mutex_unlock(&res_pool->mutex);
        *new_resource = resource;
-       return 0;
-error:
-       if (mutex_locked)
-               mutex_unlock(&res_pool->mutex);
-
+out:
        return error;
 }
 EXPORT_SYMBOL_GPL(fsl_mc_resource_allocate);
 void fsl_mc_resource_free(struct fsl_mc_resource *resource)
 {
        struct fsl_mc_resource_pool *res_pool;
-       bool mutex_locked = false;
 
        res_pool = resource->parent_pool;
        if (WARN_ON(resource->type != res_pool->type))
-               goto out;
+               return;
 
        mutex_lock(&res_pool->mutex);
-       mutex_locked = true;
        if (WARN_ON(res_pool->free_count < 0 ||
                    res_pool->free_count >= res_pool->max_count))
-               goto out;
+               goto out_unlock;
 
        if (WARN_ON(!list_empty(&resource->node)))
-               goto out;
+               goto out_unlock;
 
        list_add_tail(&resource->node, &res_pool->free_list);
        res_pool->free_count++;
-out:
-       if (mutex_locked)
-               mutex_unlock(&res_pool->mutex);
+out_unlock:
+       mutex_unlock(&res_pool->mutex);
 }
 EXPORT_SYMBOL_GPL(fsl_mc_resource_free);