Re: [PATCH] net: macsec: fix double free of percpu stats

From: Jakub Kicinski
Date: Tue Jun 13 2023 - 23:02:04 EST


On Tue, 13 Jun 2023 22:22:20 +0300 Fedor Pchelkin wrote:
> Inside macsec_add_dev() we free percpu macsec->secy.tx_sc.stats and
> macsec->stats on some of the memory allocation failure paths. However, the
> net_device is already registered to that moment: in macsec_newlink(), just
> before calling macsec_add_dev(). This means that during unregister process
> its priv_destructor - macsec_free_netdev() - will be called and will free
> the stats again.
>
> Remove freeing percpu stats inside macsec_add_dev() because
> macsec_free_netdev() will correctly free the already allocated ones. The
> pointers to unallocated stats stay NULL, and free_percpu() treats that
> correctly.

What prevents the device from being opened and used before
macsec_add_dev() has finished? I think we need a fix which
would move this code before register_netdev(), instead :(
--
pw-bot: cr