]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/base/dmapool.c
[SCSI] lpfc 8.1.11 : Adjust LOG_FCP logging
[linux-2.6-omap-h63xx.git] / drivers / base / dmapool.c
index 60a7ef6a201b879ecedafe996c36c730259d4ba6..b2efbd4cf710d9d0ce79474c2280d04c6bbd7c42 100644 (file)
@@ -7,6 +7,7 @@
 #include <linux/dmapool.h>
 #include <linux/slab.h>
 #include <linux/module.h>
+#include <linux/poison.h>
 
 /*
  * Pool allocator ... wraps the dma_alloc_coherent page allocator, so
@@ -35,8 +36,6 @@ struct dma_page {     /* cacheable header for 'allocation' bytes */
 };
 
 #define        POOL_TIMEOUT_JIFFIES    ((100 /* msec */ * HZ) / 1000)
-#define        POOL_POISON_FREED       0xa7    /* !inuse */
-#define        POOL_POISON_ALLOCATED   0xa9    /* !initted */
 
 static DECLARE_MUTEX (pools_lock);
 
@@ -142,11 +141,20 @@ dma_pool_create (const char *name, struct device *dev,
        init_waitqueue_head (&retval->waitq);
 
        if (dev) {
+               int ret;
+
                down (&pools_lock);
                if (list_empty (&dev->dma_pools))
-                       device_create_file (dev, &dev_attr_pools);
+                       ret = device_create_file (dev, &dev_attr_pools);
+               else
+                       ret = 0;
                /* note:  not currently insisting "name" be unique */
-               list_add (&retval->pools, &dev->dma_pools);
+               if (!ret)
+                       list_add (&retval->pools, &dev->dma_pools);
+               else {
+                       kfree(retval);
+                       retval = NULL;
+               }
                up (&pools_lock);
        } else
                INIT_LIST_HEAD (&retval->pools);
@@ -156,7 +164,7 @@ dma_pool_create (const char *name, struct device *dev,
 
 
 static struct dma_page *
-pool_alloc_page (struct dma_pool *pool, unsigned int __nocast mem_flags)
+pool_alloc_page (struct dma_pool *pool, gfp_t mem_flags)
 {
        struct dma_page *page;
        int             mapsize;
@@ -262,8 +270,7 @@ dma_pool_destroy (struct dma_pool *pool)
  * If such a memory block can't be allocated, null is returned.
  */
 void *
-dma_pool_alloc (struct dma_pool *pool, unsigned int __nocast mem_flags,
-               dma_addr_t *handle)
+dma_pool_alloc (struct dma_pool *pool, gfp_t mem_flags, dma_addr_t *handle)
 {
        unsigned long           flags;
        struct dma_page         *page;