]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - mm/dmapool.c
Merge branch 'akpm-current/current'
[karo-tx-linux.git] / mm / dmapool.c
index 8058fcd7ae917db50b1c906160b9b34795e84399..306baa594f95cd8ed8e5c945e4cc46e4f19c1f93 100644 (file)
@@ -170,24 +170,16 @@ struct dma_pool *dma_pool_create(const char *name, struct device *dev,
        retval->boundary = boundary;
        retval->allocation = allocation;
 
-       if (dev) {
-               int ret;
+       INIT_LIST_HEAD(&retval->pools);
 
-               mutex_lock(&pools_lock);
-               if (list_empty(&dev->dma_pools))
-                       ret = device_create_file(dev, &dev_attr_pools);
-               else
-                       ret = 0;
-               /* note:  not currently insisting "name" be unique */
-               if (!ret)
-                       list_add(&retval->pools, &dev->dma_pools);
-               else {
-                       kfree(retval);
-                       retval = NULL;
-               }
-               mutex_unlock(&pools_lock);
+       mutex_lock(&pools_lock);
+       if (list_empty(&dev->dma_pools) &&
+           device_create_file(dev, &dev_attr_pools)) {
+               kfree(retval);
+               return NULL;
        } else
-               INIT_LIST_HEAD(&retval->pools);
+               list_add(&retval->pools, &dev->dma_pools);
+       mutex_unlock(&pools_lock);
 
        return retval;
 }
@@ -508,7 +500,6 @@ void dmam_pool_destroy(struct dma_pool *pool)
 {
        struct device *dev = pool->dev;
 
-       WARN_ON(devres_destroy(dev, dmam_pool_release, dmam_pool_match, pool));
-       dma_pool_destroy(pool);
+       WARN_ON(devres_release(dev, dmam_pool_release, dmam_pool_match, pool));
 }
 EXPORT_SYMBOL(dmam_pool_destroy);