return 0;
 }
 
+static void page_pool_uninit(struct page_pool *pool)
+{
+       ptr_ring_cleanup(&pool->ring, NULL);
+
+       if (pool->p.flags & PP_FLAG_DMA_MAP)
+               put_device(pool->p.dev);
+
+#ifdef CONFIG_PAGE_POOL_STATS
+       free_percpu(pool->recycle_stats);
+#endif
+}
+
 /**
  * page_pool_create() - create a page pool.
  * @params: parameters, see struct page_pool_params
        if (pool->disconnect)
                pool->disconnect(pool);
 
-       ptr_ring_cleanup(&pool->ring, NULL);
-
-       if (pool->p.flags & PP_FLAG_DMA_MAP)
-               put_device(pool->p.dev);
-
-#ifdef CONFIG_PAGE_POOL_STATS
-       free_percpu(pool->recycle_stats);
-#endif
+       page_pool_uninit(pool);
        kfree(pool);
 }