Files
Florian WestphalandGreg Kroah-Hartman a561c6a034 netfilter: nf_tables: allow clone callbacks to sleep
commit fa23e0d4b7 upstream.

Sven Auhagen reports transaction failures with following error:
  ./main.nft:13:1-26: Error: Could not process rule: Cannot allocate memory
  percpu: allocation failed, size=16 align=8 atomic=1, atomic alloc failed, no space left

This points to failing pcpu allocation with GFP_ATOMIC flag.
However, transactions happen from user context and are allowed to sleep.

One case where we can call into percpu allocator with GFP_ATOMIC is
nft_counter expression.

Normally this happens from control plane, so this could use GFP_KERNEL
instead.  But one use case, element insertion from packet path,
needs to use GFP_ATOMIC allocations (nft_dynset expression).

At this time, .clone callbacks always use GFP_ATOMIC for this reason.

Add gfp_t argument to the .clone function and pass GFP_KERNEL or
GFP_ATOMIC flag depending on context, this allows all clone memory
allocations to sleep for the normal (transaction) case.

Cc: Sven Auhagen <sven.auhagen@voleatech.de>
Signed-off-by: Florian Westphal <fw@strlen.de>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2025-03-22 12:50:50 -07:00
..
2025-02-08 09:51:55 +01:00
2023-11-20 11:59:34 +01:00
2024-01-31 16:19:01 -08:00
2023-04-22 01:39:41 +02:00
2025-03-07 16:45:39 +01:00
2024-12-19 18:11:28 +01:00
2023-08-22 17:31:18 -07:00
2025-02-21 13:57:20 +01:00
2023-05-11 18:07:05 -07:00
2023-07-14 20:39:30 -07:00
2025-02-27 04:10:50 -08:00
2025-02-27 04:10:50 -08:00
2024-07-18 13:21:12 +02:00
2023-07-28 14:07:59 -07:00
2023-11-20 11:58:56 +01:00
2023-08-02 10:58:26 +01:00
2023-07-19 09:56:49 -07:00