| From: Keith Busch <kbusch@kernel.org> |
| Subject: dmapool: don't memset on free twice |
| Date: Thu, 26 Jan 2023 13:51:23 -0800 |
| |
| If debug is enabled, dmapool will poison the range, so no need to clear it |
| to 0 immediately before writing over it. |
| |
| Link: https://lkml.kernel.org/r/20230126215125.4069751-11-kbusch@meta.com |
| Fixes: 2d55c16c0c54 ("dmapool: create/destroy cleanup") |
| Signed-off-by: Keith Busch <kbusch@kernel.org> |
| Reviewed-by: Christoph Hellwig <hch@lst.de> |
| Cc: Matthew Wilcox <willy@infradead.org> |
| Cc: Tony Battersby <tonyb@cybernetics.com> |
| Signed-off-by: Andrew Morton <akpm@linux-foundation.org> |
| --- |
| |
| mm/dmapool.c | 4 ++-- |
| 1 file changed, 2 insertions(+), 2 deletions(-) |
| |
| --- a/mm/dmapool.c~dmapool-dont-memset-on-free-twice |
| +++ a/mm/dmapool.c |
| @@ -160,6 +160,8 @@ static void pool_check_block(struct dma_ |
| static bool pool_page_err(struct dma_pool *pool, struct dma_page *page, |
| void *vaddr, dma_addr_t dma) |
| { |
| + if (want_init_on_free()) |
| + memset(vaddr, 0, pool->size); |
| return false; |
| } |
| |
| @@ -441,8 +443,6 @@ void dma_pool_free(struct dma_pool *pool |
| return; |
| } |
| |
| - if (want_init_on_free()) |
| - memset(vaddr, 0, pool->size); |
| if (pool_page_err(pool, page, vaddr, dma)) { |
| spin_unlock_irqrestore(&pool->lock, flags); |
| return; |
| _ |