dmapool.c (756a025f00091918d9d09ca3229defb160b409c0) | dmapool.c (1170532bb49f9468aedabdc1d5a560e2521a2bcc) |
---|---|
1/* 2 * DMA Pool allocator 3 * 4 * Copyright 2001 David Brownell 5 * Copyright 2007 Intel Corporation 6 * Author: Matthew Wilcox <willy@linux.intel.com> 7 * 8 * This software may be redistributed and/or modified under the terms of --- 280 unchanged lines hidden (view full) --- 289 page = list_entry(pool->page_list.next, 290 struct dma_page, page_list); 291 if (is_page_busy(page)) { 292 if (pool->dev) 293 dev_err(pool->dev, 294 "dma_pool_destroy %s, %p busy\n", 295 pool->name, page->vaddr); 296 else | 1/* 2 * DMA Pool allocator 3 * 4 * Copyright 2001 David Brownell 5 * Copyright 2007 Intel Corporation 6 * Author: Matthew Wilcox <willy@linux.intel.com> 7 * 8 * This software may be redistributed and/or modified under the terms of --- 280 unchanged lines hidden (view full) --- 289 page = list_entry(pool->page_list.next, 290 struct dma_page, page_list); 291 if (is_page_busy(page)) { 292 if (pool->dev) 293 dev_err(pool->dev, 294 "dma_pool_destroy %s, %p busy\n", 295 pool->name, page->vaddr); 296 else |
297 printk(KERN_ERR 298 "dma_pool_destroy %s, %p busy\n", | 297 pr_err("dma_pool_destroy %s, %p busy\n", |
299 pool->name, page->vaddr); 300 /* leak the still-in-use consistent memory */ 301 list_del(&page->page_list); 302 kfree(page); 303 } else 304 pool_free_page(pool, page); 305 } 306 --- 112 unchanged lines hidden (view full) --- 419 page = pool_find_page(pool, dma); 420 if (!page) { 421 spin_unlock_irqrestore(&pool->lock, flags); 422 if (pool->dev) 423 dev_err(pool->dev, 424 "dma_pool_free %s, %p/%lx (bad dma)\n", 425 pool->name, vaddr, (unsigned long)dma); 426 else | 298 pool->name, page->vaddr); 299 /* leak the still-in-use consistent memory */ 300 list_del(&page->page_list); 301 kfree(page); 302 } else 303 pool_free_page(pool, page); 304 } 305 --- 112 unchanged lines hidden (view full) --- 418 page = pool_find_page(pool, dma); 419 if (!page) { 420 spin_unlock_irqrestore(&pool->lock, flags); 421 if (pool->dev) 422 dev_err(pool->dev, 423 "dma_pool_free %s, %p/%lx (bad dma)\n", 424 pool->name, vaddr, (unsigned long)dma); 425 else |
427 printk(KERN_ERR "dma_pool_free %s, %p/%lx (bad dma)\n", | 426 pr_err("dma_pool_free %s, %p/%lx (bad dma)\n", |
428 pool->name, vaddr, (unsigned long)dma); 429 return; 430 } 431 432 offset = vaddr - page->vaddr; 433#ifdef DMAPOOL_DEBUG 434 if ((dma - page->dma) != offset) { 435 spin_unlock_irqrestore(&pool->lock, flags); 436 if (pool->dev) 437 dev_err(pool->dev, 438 "dma_pool_free %s, %p (bad vaddr)/%Lx\n", 439 pool->name, vaddr, (unsigned long long)dma); 440 else | 427 pool->name, vaddr, (unsigned long)dma); 428 return; 429 } 430 431 offset = vaddr - page->vaddr; 432#ifdef DMAPOOL_DEBUG 433 if ((dma - page->dma) != offset) { 434 spin_unlock_irqrestore(&pool->lock, flags); 435 if (pool->dev) 436 dev_err(pool->dev, 437 "dma_pool_free %s, %p (bad vaddr)/%Lx\n", 438 pool->name, vaddr, (unsigned long long)dma); 439 else |
441 printk(KERN_ERR 442 "dma_pool_free %s, %p (bad vaddr)/%Lx\n", | 440 pr_err("dma_pool_free %s, %p (bad vaddr)/%Lx\n", |
443 pool->name, vaddr, (unsigned long long)dma); 444 return; 445 } 446 { 447 unsigned int chain = page->offset; 448 while (chain < pool->allocation) { 449 if (chain != offset) { 450 chain = *(int *)(page->vaddr + chain); 451 continue; 452 } 453 spin_unlock_irqrestore(&pool->lock, flags); 454 if (pool->dev) 455 dev_err(pool->dev, "dma_pool_free %s, dma %Lx already free\n", 456 pool->name, (unsigned long long)dma); 457 else | 441 pool->name, vaddr, (unsigned long long)dma); 442 return; 443 } 444 { 445 unsigned int chain = page->offset; 446 while (chain < pool->allocation) { 447 if (chain != offset) { 448 chain = *(int *)(page->vaddr + chain); 449 continue; 450 } 451 spin_unlock_irqrestore(&pool->lock, flags); 452 if (pool->dev) 453 dev_err(pool->dev, "dma_pool_free %s, dma %Lx already free\n", 454 pool->name, (unsigned long long)dma); 455 else |
458 printk(KERN_ERR "dma_pool_free %s, dma %Lx already free\n", 459 pool->name, (unsigned long long)dma); | 456 pr_err("dma_pool_free %s, dma %Lx already free\n", 457 pool->name, (unsigned long long)dma); |
460 return; 461 } 462 } 463 memset(vaddr, POOL_POISON_FREED, pool->size); 464#endif 465 466 page->in_use--; 467 *(int *)vaddr = page->offset; --- 68 unchanged lines hidden --- | 458 return; 459 } 460 } 461 memset(vaddr, POOL_POISON_FREED, pool->size); 462#endif 463 464 page->in_use--; 465 *(int *)vaddr = page->offset; --- 68 unchanged lines hidden --- |