Message ID | 20200731023939.19206-1-qiang.zhang@windriver.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | mm/dmapool.c: add WARN_ON() in dma_pool_destroy | expand |
On Fri, Jul 31, 2020 at 10:39:39AM +0800, qiang.zhang@windriver.com wrote: > The pool is being destroyed, all page which in the pool, > should be free. if some page is still be use by somebody, > we should not just output error logs, also should also add > a warning message. There's already a warning message. What value does this actually have? > Signed-off-by: Zhang Qiang <qiang.zhang@windriver.com> > --- > mm/dmapool.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/mm/dmapool.c b/mm/dmapool.c > index f9fb9bbd733e..8f4dc53dde5b 100644 > --- a/mm/dmapool.c > +++ b/mm/dmapool.c > @@ -285,7 +285,7 @@ void dma_pool_destroy(struct dma_pool *pool) > struct dma_page *page; > page = list_entry(pool->page_list.next, > struct dma_page, page_list); > - if (is_page_busy(page)) { > + if (WARN_ON(is_page_busy(page))) { > if (pool->dev) > dev_err(pool->dev, > "dma_pool_destroy %s, %p busy\n", > -- > 2.26.2 >
On Fri, 31 Jul 2020 03:38:58 +0100 Matthew Wilcox <willy@infradead.org> wrote: > On Fri, Jul 31, 2020 at 10:39:39AM +0800, qiang.zhang@windriver.com wrote: > > The pool is being destroyed, all page which in the pool, > > should be free. if some page is still be use by somebody, > > we should not just output error logs, also should also add > > a warning message. > > There's already a warning message. What value does this actually have? Presumably so we get a backtrace in order to identify the errant caller. I added a bit to the changelog: : The pool is being destroyed so all pages which are in the pool should be : free. If some page is still in use by somebody, we should not just output : error logs, also should also add a WARN message so the stack backtrace may : be used to identify the caller.
On Fri, Jul 31, 2020 at 01:32:15PM -0700, Andrew Morton wrote: > On Fri, 31 Jul 2020 03:38:58 +0100 Matthew Wilcox <willy@infradead.org> wrote: > > > On Fri, Jul 31, 2020 at 10:39:39AM +0800, qiang.zhang@windriver.com wrote: > > > The pool is being destroyed, all page which in the pool, > > > should be free. if some page is still be use by somebody, > > > we should not just output error logs, also should also add > > > a warning message. > > > > There's already a warning message. What value does this actually have? > > Presumably so we get a backtrace in order to identify the errant > caller. The existing message includes the name of the pool. We don't typically have more than one place that destroys a pool. What might be helpful would be something that said who allocated and didn't free the object, but again, there's typically only one place which allocates from any given pool, so even that would be all that helpful. I'm not particularly impressed by these patches which don't actually justify themselves.
diff --git a/mm/dmapool.c b/mm/dmapool.c index f9fb9bbd733e..8f4dc53dde5b 100644 --- a/mm/dmapool.c +++ b/mm/dmapool.c @@ -285,7 +285,7 @@ void dma_pool_destroy(struct dma_pool *pool) struct dma_page *page; page = list_entry(pool->page_list.next, struct dma_page, page_list); - if (is_page_busy(page)) { + if (WARN_ON(is_page_busy(page))) { if (pool->dev) dev_err(pool->dev, "dma_pool_destroy %s, %p busy\n",