Re: [PATCH net v2] net: pfcp: allocate per-cpu tstats for PFCP netdevs

From: Alexander Lobakin

Date: Thu Jun 11 2026 - 10:45:19 EST


From: Samuel Moelius <sam.moelius@xxxxxxxxxxxxxxx>
Date: Tue, 9 Jun 2026 23:22:45 +0000

> PFCP uses dev_get_tstats64() as its ndo_get_stats64 callback, but
> pfcp_link_setup() does not request NETDEV_PCPU_STAT_TSTATS. The net
> core therefore leaves dev->tstats NULL for PFCP devices.
>
> Creating a PFCP rtnetlink device can immediately ask the new netdev for
> stats while building the RTM_NEWLINK notification. That reaches
> dev_get_tstats64() and dereferences the NULL dev->tstats pointer.
>
> Set pcpu_stat_type to NETDEV_PCPU_STAT_TSTATS during PFCP link setup so
> the net core allocates the storage expected by dev_get_tstats64().
>
> Fixes: 76c8764ef36a ("pfcp: add PFCP module")
> Assisted-by: Codex:gpt-5.5-cyber-preview
> Signed-off-by: Samuel Moelius <sam.moelius@xxxxxxxxxxxxxxx>

Reviewed-by: Alexander Lobakin <aleksander.lobakin@xxxxxxxxx>

> ---
> Changes in v2:
> - Added fixes tag
>
> drivers/net/pfcp.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/drivers/net/pfcp.c b/drivers/net/pfcp.c
> index 28e6bc4a1f14..a6aa30ae0af7 100644
> --- a/drivers/net/pfcp.c
> +++ b/drivers/net/pfcp.c
> @@ -148,6 +148,7 @@ static void pfcp_link_setup(struct net_device *dev)
> dev->flags = IFF_POINTOPOINT | IFF_NOARP | IFF_MULTICAST;
> dev->priv_flags |= IFF_NO_QUEUE;
>
> + dev->pcpu_stat_type = NETDEV_PCPU_STAT_TSTATS;
> netif_keep_dst(dev);
> }

Thanks,
Olek