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


Reply via email to