Preparing for a refactor in a subsequent patch, split the pool-related
release code into a new pci_p2pdma_release_pool() function.

This allows future compile-time selection of a null implementation for
pci_p2pdma_release_pool(), when p2pdma.c is refactored into core- and
P2P-related files.

Signed-off-by: Matt Evans <[email protected]>
---
 drivers/pci/p2pdma.c | 24 ++++++++++++++----------
 1 file changed, 14 insertions(+), 10 deletions(-)

diff --git a/drivers/pci/p2pdma.c b/drivers/pci/p2pdma.c
index 7c898542af8d..a5a1baebc34e 100644
--- a/drivers/pci/p2pdma.c
+++ b/drivers/pci/p2pdma.c
@@ -226,6 +226,17 @@ static const struct dev_pagemap_ops p2pdma_pgmap_ops = {
        .folio_free = p2pdma_folio_free,
 };
 
+static void pci_p2pdma_release_pool(struct pci_dev *pdev,
+                                   struct pci_p2pdma *p2pdma)
+{
+       if (!p2pdma->pool)
+               return;
+
+       synchronize_rcu();
+       gen_pool_destroy(p2pdma->pool);
+       sysfs_remove_group(&pdev->dev.kobj, &p2pmem_group);
+}
+
 static void pci_p2pdma_release(void *data)
 {
        struct pci_dev *pdev = data;
@@ -237,15 +248,8 @@ static void pci_p2pdma_release(void *data)
 
        /* Flush and disable pci_alloc_p2p_mem() */
        pdev->p2pdma = NULL;
-       if (p2pdma->pool)
-               synchronize_rcu();
+       pci_p2pdma_release_pool(pdev, p2pdma);
        xa_destroy(&p2pdma->map_types);
-
-       if (!p2pdma->pool)
-               return;
-
-       gen_pool_destroy(p2pdma->pool);
-       sysfs_remove_group(&pdev->dev.kobj, &p2pmem_group);
 }
 
 /**
@@ -932,8 +936,8 @@ void *pci_alloc_p2pmem(struct pci_dev *pdev, size_t size)
        struct pci_p2pdma *p2pdma;
 
        /*
-        * Pairs with synchronize_rcu() in pci_p2pdma_release() to
-        * ensure pdev->p2pdma is non-NULL for the duration of the
+        * Pairs with synchronize_rcu() in pci_p2pdma_release_pool()
+        * to ensure pdev->p2pdma is non-NULL for the duration of the
         * read-lock.
         */
        rcu_read_lock();
-- 
2.50.1 (Apple Git-155)

Reply via email to