diff options
Diffstat (limited to 'mm/dmapool.c')
| -rw-r--r-- | mm/dmapool.c | 31 | 
1 files changed, 11 insertions, 20 deletions
diff --git a/mm/dmapool.c b/mm/dmapool.c index c69781e97cf..306baa594f9 100644 --- a/mm/dmapool.c +++ b/mm/dmapool.c @@ -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;  } @@ -341,10 +333,10 @@ void *dma_pool_alloc(struct dma_pool *pool, gfp_t mem_flags,  				continue;  			if (pool->dev)  				dev_err(pool->dev, -					"dma_pool_alloc %s, %p (corruped)\n", +					"dma_pool_alloc %s, %p (corrupted)\n",  					pool->name, retval);  			else -				pr_err("dma_pool_alloc %s, %p (corruped)\n", +				pr_err("dma_pool_alloc %s, %p (corrupted)\n",  					pool->name, 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);  | 
