diff options
| author | David Brownell <david-b@pacbell.net> | 2003-06-09 20:51:23 -0700 |
|---|---|---|
| committer | Greg Kroah-Hartman <greg@kroah.com> | 2003-06-09 20:51:23 -0700 |
| commit | 6149f43cceb2c090c6f3fe548bf1642f5da3f7c1 (patch) | |
| tree | 647e796fd7d33c73c2e945d539b4c0da2c9e929e | |
| parent | c3c60a75de4e7c58d39b7b85a4db2188d9c6fde8 (diff) | |
[PATCH] PCI: pci pool, poison more like slab code
This adds a new poisoning mode, distinguishing memory
that's uninitialized from memory that's freed. The
slab code has been doing this for a while now.
| -rw-r--r-- | drivers/pci/pool.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/drivers/pci/pool.c b/drivers/pci/pool.c index ce7067248eac..3b0ea54497a6 100644 --- a/drivers/pci/pool.c +++ b/drivers/pci/pool.c @@ -29,7 +29,8 @@ struct pci_page { /* cacheable header for 'allocation' bytes */ }; #define POOL_TIMEOUT_JIFFIES ((100 /* msec */ * HZ) / 1000) -#define POOL_POISON_BYTE 0xa7 +#define POOL_POISON_FREED 0xa7 /* !inuse */ +#define POOL_POISON_ALLOCATED 0xa9 /* !initted */ static DECLARE_MUTEX (pools_lock); @@ -172,7 +173,7 @@ pool_alloc_page (struct pci_pool *pool, int mem_flags) if (page->vaddr) { memset (page->bitmap, 0xff, mapsize); // bit set == free #ifdef CONFIG_DEBUG_SLAB - memset (page->vaddr, POOL_POISON_BYTE, pool->allocation); + memset (page->vaddr, POOL_POISON_FREED, pool->allocation); #endif list_add (&page->page_list, &pool->page_list); page->in_use = 0; @@ -201,7 +202,7 @@ pool_free_page (struct pci_pool *pool, struct pci_page *page) dma_addr_t dma = page->dma; #ifdef CONFIG_DEBUG_SLAB - memset (page->vaddr, POOL_POISON_BYTE, pool->allocation); + memset (page->vaddr, POOL_POISON_FREED, pool->allocation); #endif pci_free_consistent (pool->dev, pool->allocation, page->vaddr, dma); list_del (&page->page_list); @@ -309,6 +310,9 @@ ready: page->in_use++; retval = offset + page->vaddr; *handle = offset + page->dma; +#ifdef CONFIG_DEBUG_SLAB + memset (retval, POOL_POISON_ALLOCATED, pool->size); +#endif done: spin_unlock_irqrestore (&pool->lock, flags); return retval; @@ -378,7 +382,7 @@ pci_pool_free (struct pci_pool *pool, void *vaddr, dma_addr_t dma) pool->name, (unsigned long long)dma); return; } - memset (vaddr, POOL_POISON_BYTE, pool->size); + memset (vaddr, POOL_POISON_FREED, pool->size); #endif spin_lock_irqsave (&pool->lock, flags); |
