Skip to content

Commit 67a540c

Browse files
abattersbyakpm00
authored andcommitted
dmapool: remove checks for dev == NULL
dmapool originally tried to support pools without a device because dma_alloc_coherent() supports allocations without a device. But nobody ended up using dma pools without a device, and trying to do so will result in an oops. So remove the checks for pool->dev == NULL since they are unneeded bloat. [kbusch@kernel.org: add check for null dev on create] Link: https://lkml.kernel.org/r/20230126215125.4069751-3-kbusch@meta.com Fixes: 2d55c16 ("dmapool: create/destroy cleanup") Signed-off-by: Tony Battersby <tonyb@cybernetics.com> Signed-off-by: Keith Busch <kbusch@kernel.org> Reviewed-by: Christoph Hellwig <hch@lst.de> Cc: Matthew Wilcox <willy@infradead.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
1 parent 418d5c9 commit 67a540c

File tree

1 file changed

+14
-31
lines changed

1 file changed

+14
-31
lines changed

mm/dmapool.c

Lines changed: 14 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,9 @@ struct dma_pool *dma_pool_create(const char *name, struct device *dev,
134134
size_t allocation;
135135
bool empty = false;
136136

137+
if (!dev)
138+
return NULL;
139+
137140
if (align == 0)
138141
align = 1;
139142
else if (align & (align - 1))
@@ -275,7 +278,7 @@ void dma_pool_destroy(struct dma_pool *pool)
275278
mutex_lock(&pools_reg_lock);
276279
mutex_lock(&pools_lock);
277280
list_del(&pool->pools);
278-
if (pool->dev && list_empty(&pool->dev->dma_pools))
281+
if (list_empty(&pool->dev->dma_pools))
279282
empty = true;
280283
mutex_unlock(&pools_lock);
281284
if (empty)
@@ -284,12 +287,8 @@ void dma_pool_destroy(struct dma_pool *pool)
284287

285288
list_for_each_entry_safe(page, tmp, &pool->page_list, page_list) {
286289
if (is_page_busy(page)) {
287-
if (pool->dev)
288-
dev_err(pool->dev, "%s %s, %p busy\n", __func__,
289-
pool->name, page->vaddr);
290-
else
291-
pr_err("%s %s, %p busy\n", __func__,
292-
pool->name, page->vaddr);
290+
dev_err(pool->dev, "%s %s, %p busy\n", __func__,
291+
pool->name, page->vaddr);
293292
/* leak the still-in-use consistent memory */
294293
list_del(&page->page_list);
295294
kfree(page);
@@ -351,12 +350,8 @@ void *dma_pool_alloc(struct dma_pool *pool, gfp_t mem_flags,
351350
for (i = sizeof(page->offset); i < pool->size; i++) {
352351
if (data[i] == POOL_POISON_FREED)
353352
continue;
354-
if (pool->dev)
355-
dev_err(pool->dev, "%s %s, %p (corrupted)\n",
356-
__func__, pool->name, retval);
357-
else
358-
pr_err("%s %s, %p (corrupted)\n",
359-
__func__, pool->name, retval);
353+
dev_err(pool->dev, "%s %s, %p (corrupted)\n",
354+
__func__, pool->name, retval);
360355

361356
/*
362357
* Dump the first 4 bytes even if they are not
@@ -411,12 +406,8 @@ void dma_pool_free(struct dma_pool *pool, void *vaddr, dma_addr_t dma)
411406
page = pool_find_page(pool, dma);
412407
if (!page) {
413408
spin_unlock_irqrestore(&pool->lock, flags);
414-
if (pool->dev)
415-
dev_err(pool->dev, "%s %s, %p/%pad (bad dma)\n",
416-
__func__, pool->name, vaddr, &dma);
417-
else
418-
pr_err("%s %s, %p/%pad (bad dma)\n",
419-
__func__, pool->name, vaddr, &dma);
409+
dev_err(pool->dev, "%s %s, %p/%pad (bad dma)\n",
410+
__func__, pool->name, vaddr, &dma);
420411
return;
421412
}
422413

@@ -426,12 +417,8 @@ void dma_pool_free(struct dma_pool *pool, void *vaddr, dma_addr_t dma)
426417
#ifdef DMAPOOL_DEBUG
427418
if ((dma - page->dma) != offset) {
428419
spin_unlock_irqrestore(&pool->lock, flags);
429-
if (pool->dev)
430-
dev_err(pool->dev, "%s %s, %p (bad vaddr)/%pad\n",
431-
__func__, pool->name, vaddr, &dma);
432-
else
433-
pr_err("%s %s, %p (bad vaddr)/%pad\n",
434-
__func__, pool->name, vaddr, &dma);
420+
dev_err(pool->dev, "%s %s, %p (bad vaddr)/%pad\n",
421+
__func__, pool->name, vaddr, &dma);
435422
return;
436423
}
437424
{
@@ -442,12 +429,8 @@ void dma_pool_free(struct dma_pool *pool, void *vaddr, dma_addr_t dma)
442429
continue;
443430
}
444431
spin_unlock_irqrestore(&pool->lock, flags);
445-
if (pool->dev)
446-
dev_err(pool->dev, "%s %s, dma %pad already free\n",
447-
__func__, pool->name, &dma);
448-
else
449-
pr_err("%s %s, dma %pad already free\n",
450-
__func__, pool->name, &dma);
432+
dev_err(pool->dev, "%s %s, dma %pad already free\n",
433+
__func__, pool->name, &dma);
451434
return;
452435
}
453436
}

0 commit comments

Comments
 (0)