soc: ti: knav_qmss_queue: Fix unbalanced locking ins knav_pool_create()
Don't call mutex_unlock() in the error patch if the mutex_lock() is not called. Signed-off-by: Axel Lin <axel.lin@ingics.com> Signed-off-by: Santosh Shilimkar <ssantosh@kernel.org>
This commit is contained in:
Родитель
42813295df
Коммит
ea6d4c07ca
|
@ -785,7 +785,7 @@ void *knav_pool_create(const char *name,
|
||||||
dev_err(kdev->dev, "out of descs in region(%d) for pool(%s)\n",
|
dev_err(kdev->dev, "out of descs in region(%d) for pool(%s)\n",
|
||||||
region_id, name);
|
region_id, name);
|
||||||
ret = -ENOMEM;
|
ret = -ENOMEM;
|
||||||
goto err;
|
goto err_unlock;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Region maintains a sorted (by region offset) list of pools
|
/* Region maintains a sorted (by region offset) list of pools
|
||||||
|
@ -815,15 +815,16 @@ void *knav_pool_create(const char *name,
|
||||||
dev_err(kdev->dev, "pool(%s) create failed: fragmented desc pool in region(%d)\n",
|
dev_err(kdev->dev, "pool(%s) create failed: fragmented desc pool in region(%d)\n",
|
||||||
name, region_id);
|
name, region_id);
|
||||||
ret = -ENOMEM;
|
ret = -ENOMEM;
|
||||||
goto err;
|
goto err_unlock;
|
||||||
}
|
}
|
||||||
|
|
||||||
mutex_unlock(&knav_dev_lock);
|
mutex_unlock(&knav_dev_lock);
|
||||||
kdesc_fill_pool(pool);
|
kdesc_fill_pool(pool);
|
||||||
return pool;
|
return pool;
|
||||||
|
|
||||||
err:
|
err_unlock:
|
||||||
mutex_unlock(&knav_dev_lock);
|
mutex_unlock(&knav_dev_lock);
|
||||||
|
err:
|
||||||
kfree(pool->name);
|
kfree(pool->name);
|
||||||
devm_kfree(kdev->dev, pool);
|
devm_kfree(kdev->dev, pool);
|
||||||
return ERR_PTR(ret);
|
return ERR_PTR(ret);
|
||||||
|
|
Загрузка…
Ссылка в новой задаче