Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ea6d4c07 authored by Axel Lin's avatar Axel Lin Committed by Santosh Shilimkar
Browse files

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: default avatarAxel Lin <axel.lin@ingics.com>
Signed-off-by: default avatarSantosh Shilimkar <ssantosh@kernel.org>
parent 42813295
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -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",
			region_id, name);
		ret = -ENOMEM;
		goto err;
		goto err_unlock;
	}

	/* 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",
			name, region_id);
		ret = -ENOMEM;
		goto err;
		goto err_unlock;
	}

	mutex_unlock(&knav_dev_lock);
	kdesc_fill_pool(pool);
	return pool;

err:
err_unlock:
	mutex_unlock(&knav_dev_lock);
err:
	kfree(pool->name);
	devm_kfree(kdev->dev, pool);
	return ERR_PTR(ret);