net: page_pool: support error injection
authorJakub Kicinski <kuba@kernel.org>
Mon, 29 Apr 2024 14:44:21 +0000 (07:44 -0700)
committerJakub Kicinski <kuba@kernel.org>
Tue, 30 Apr 2024 15:15:31 +0000 (08:15 -0700)
Because of caching / recycling using the general page allocation
failures to induce errors in page pool allocation is very hard.
Add direct error injection support to page_pool_alloc_pages().

Reviewed-by: Willem de Bruijn <willemb@google.com>
Link: https://lore.kernel.org/r/20240429144426.743476-2-kuba@kernel.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/core/page_pool.c

index 273c24429bced732cc2c4dac2c6ec655541643b2..8bcc7014a61a006d1cdaffed352c38cca8689334 100644 (file)
@@ -5,6 +5,7 @@
  *     Copyright (C) 2016 Red Hat, Inc.
  */
 
+#include <linux/error-injection.h>
 #include <linux/types.h>
 #include <linux/kernel.h>
 #include <linux/slab.h>
@@ -550,6 +551,7 @@ struct page *page_pool_alloc_pages(struct page_pool *pool, gfp_t gfp)
        return page;
 }
 EXPORT_SYMBOL(page_pool_alloc_pages);
+ALLOW_ERROR_INJECTION(page_pool_alloc_pages, NULL);
 
 /* Calculate distance between two u32 values, valid if distance is below 2^(31)
  *  https://en.wikipedia.org/wiki/Serial_number_arithmetic#General_Solution