]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - mm/dmapool.c
PCI: Enable SR-IOV ARI Capable Hierarchy before reading TotalVFs
[karo-tx-linux.git] / mm / dmapool.c
index 59d10d16f0a5d906b18d98d1962f454075c828fe..71a8998cd03a6b8b0d2dbfe36a24ce70766047e8 100644 (file)
@@ -271,6 +271,9 @@ void dma_pool_destroy(struct dma_pool *pool)
 {
        bool empty = false;
 
+       if (unlikely(!pool))
+               return;
+
        mutex_lock(&pools_reg_lock);
        mutex_lock(&pools_lock);
        list_del(&pool->pools);
@@ -334,7 +337,7 @@ void *dma_pool_alloc(struct dma_pool *pool, gfp_t mem_flags,
        /* pool_alloc_page() might sleep, so temporarily drop &pool->lock */
        spin_unlock_irqrestore(&pool->lock, flags);
 
-       page = pool_alloc_page(pool, mem_flags);
+       page = pool_alloc_page(pool, mem_flags & (~__GFP_ZERO));
        if (!page)
                return NULL;
 
@@ -372,9 +375,14 @@ void *dma_pool_alloc(struct dma_pool *pool, gfp_t mem_flags,
                        break;
                }
        }
-       memset(retval, POOL_POISON_ALLOCATED, pool->size);
+       if (!(mem_flags & __GFP_ZERO))
+               memset(retval, POOL_POISON_ALLOCATED, pool->size);
 #endif
        spin_unlock_irqrestore(&pool->lock, flags);
+
+       if (mem_flags & __GFP_ZERO)
+               memset(retval, 0, pool->size);
+
        return retval;
 }
 EXPORT_SYMBOL(dma_pool_alloc);