net: veth: Page pool creation error handling for existing pools only
authorLiang Chen <liangchen.linux@gmail.com>
Sat, 12 Aug 2023 02:30:16 +0000 (10:30 +0800)
committerJakub Kicinski <kuba@kernel.org>
Tue, 15 Aug 2023 02:26:19 +0000 (19:26 -0700)
The failure handling procedure destroys page pools for all queues,
including those that haven't had their page pool created yet. this patch
introduces necessary adjustments to prevent potential risks and
inconsistency with the error handling behavior.

Fixes: 0ebab78cbcbf ("net: veth: add page_pool for page recycling")
Acked-by: Jesper Dangaard Brouer <hawk@kernel.org>
Signed-off-by: Liang Chen <liangchen.linux@gmail.com>
Link: https://lore.kernel.org/r/20230812023016.10553-1-liangchen.linux@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/veth.c

index 614f3e3efab0950fa4bbe1ee897ba008fc5e3369..509e901da41dbb351c317d49a0f72eb0bff76496 100644 (file)
@@ -1081,8 +1081,9 @@ static int __veth_napi_enable_range(struct net_device *dev, int start, int end)
 err_xdp_ring:
        for (i--; i >= start; i--)
                ptr_ring_cleanup(&priv->rq[i].xdp_ring, veth_ptr_free);
+       i = end;
 err_page_pool:
-       for (i = start; i < end; i++) {
+       for (i--; i >= start; i--) {
                page_pool_destroy(priv->rq[i].page_pool);
                priv->rq[i].page_pool = NULL;
        }