Re: [GIT PULL] dmapool updates for 6.4-rc1

From: Andrew Morton
Date: Sat May 06 2023 - 15:04:21 EST


On Sat, 6 May 2023 11:53:16 -0700 Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx> wrote:

> On Sat, May 6, 2023 at 10:50 AM Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> wrote:
> >
> > Reinstate the dmapool changes which were accidentally removed by
> > 2d55c16c0c54 ("dmapool: create/destroy cleanup").
>
> Hmm. So this series is exactly the same as def8574308ed..2d55c16c0c54,
> except for not having that last broken one.
>
> Which is fine, but I'm a bit surprised. Why?
>
> Because it's also missing the _real_ "dmapool: create/destroy cleanup"
> patch, ie this one:
>
> https://lore.kernel.org/linux-mm/20230126215125.4069751-13-kbusch@xxxxxxxx/
>
> and I realize you somehow corrupted it last time, but I did expect it
> to show up (perhaps folded into another patch, but in _some_ form).
>
> Anyway, I've pulled this, but I think the end result of all this
> confusion was still a tad broken.
>

Yes, it's just a little cleanup so I figured I'd restore the
non-messed-up patches that make functional changes and hold this one
off for the next merge window.


From: Keith Busch <kbusch@xxxxxxxxxx>
Subject: dmapool: create/destroy cleanup
Date: Thu, 26 Jan 2023 13:51:25 -0800

Set the 'empty' bool directly from the result of the function that
determines its value instead of adding additional logic.

Link: https://lkml.kernel.org/r/20230126215125.4069751-13-kbusch@xxxxxxxx
Fixes: 2d55c16c0c54 ("dmapool: create/destroy cleanup")
Signed-off-by: Keith Busch <kbusch@xxxxxxxxxx>
Reviewed-by: Christoph Hellwig <hch@xxxxxx>
Cc: Matthew Wilcox <willy@xxxxxxxxxxxxx>
Cc: Tony Battersby <tonyb@xxxxxxxxxxxxxxx>
Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>
---

mm/dmapool.c | 10 ++++------
1 file changed, 4 insertions(+), 6 deletions(-)

--- a/mm/dmapool.c~dmapool-create-destroy-cleanup
+++ a/mm/dmapool.c
@@ -226,7 +226,7 @@ struct dma_pool *dma_pool_create(const c
{
struct dma_pool *retval;
size_t allocation;
- bool empty = false;
+ bool empty;

if (!dev)
return NULL;
@@ -276,8 +276,7 @@ struct dma_pool *dma_pool_create(const c
*/
mutex_lock(&pools_reg_lock);
mutex_lock(&pools_lock);
- if (list_empty(&dev->dma_pools))
- empty = true;
+ empty = list_empty(&dev->dma_pools);
list_add(&retval->pools, &dev->dma_pools);
mutex_unlock(&pools_lock);
if (empty) {
@@ -361,7 +360,7 @@ static struct dma_page *pool_alloc_page(
void dma_pool_destroy(struct dma_pool *pool)
{
struct dma_page *page, *tmp;
- bool empty = false, busy = false;
+ bool empty, busy = false;

if (unlikely(!pool))
return;
@@ -369,8 +368,7 @@ void dma_pool_destroy(struct dma_pool *p
mutex_lock(&pools_reg_lock);
mutex_lock(&pools_lock);
list_del(&pool->pools);
- if (list_empty(&pool->dev->dma_pools))
- empty = true;
+ empty = list_empty(&pool->dev->dma_pools);
mutex_unlock(&pools_lock);
if (empty)
device_remove_file(pool->dev, &dev_attr_pools);
_