]> git.karo-electronics.de Git - linux-beck.git/commitdiff
soc: ti: knav_qmss_queue: Fix unbalanced locking ins knav_pool_create()
authorAxel Lin <axel.lin@ingics.com>
Mon, 27 Oct 2014 16:37:35 +0000 (09:37 -0700)
committerSantosh Shilimkar <ssantosh@kernel.org>
Mon, 27 Oct 2014 16:37:35 +0000 (09:37 -0700)
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>
drivers/soc/ti/knav_qmss_queue.c

index 0a2c8634c48b30a38773f00f019f53e175e86371..d66aaf2c2ecd48539b7fa7be64be0f73d6c162f7 100644 (file)
@@ -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);