On 7/2/26 7:07 PM, Pedro Falcato wrote:> @@ -586,6 +586,8 @@ struct
sk_buff *napi_build_skb(void *data, unsigned int frag_size)
> }
> EXPORT_SYMBOL(napi_build_skb);
>
> +static kmem_buckets *skb_data_buckets __ro_after_init;
> +
> static void *kmalloc_pfmemalloc(size_t obj_size, gfp_t flags, int node)
> {
> if (!gfp_pfmemalloc_allowed(flags))
> @@ -593,7 +595,8 @@ static void *kmalloc_pfmemalloc(size_t obj_size, gfp_t
> flags, int node)
> if (!obj_size)
> return kmem_cache_alloc_node(net_hotdata.skb_small_head_cache,
> flags, node);
> - return kmalloc_node_track_caller(obj_size, flags, node);
> + return kmem_buckets_alloc_node_track_caller(skb_data_buckets, obj_size,
> + flags, node);
Sashiko noted that some drivers may require GFP_DMA buckets, and the
above may break them:
https://sashiko.dev/#/patchset/20260702170728.168755-1-pfalcato%40suse.de
> }
>
> /*
> @@ -634,7 +637,7 @@ static void *kmalloc_reserve(unsigned int *size, gfp_t
> flags, int node,
> * Try a regular allocation, when that fails and we're not entitled
> * to the reserves, fail.
> */
> - obj = kmalloc_node_track_caller(obj_size,
> + obj = kmem_buckets_alloc_node_track_caller(skb_data_buckets, obj_size,
> flags | __GFP_NOMEMALLOC | __GFP_NOWARN,
> node);
Minor nit: checkpatch laments WRT brackets alignment.
/P