Messages in this thread | ![/](/images/icornerl.gif) | | Date | Thu, 9 Dec 2021 15:26:45 -0500 | Subject | Re: [PATCH] tun: avoid double free in tun_free_netdev | From | George Kennedy <> |
| |
On 12/8/2021 6:58 PM, Jakub Kicinski wrote: > On Wed, 8 Dec 2021 11:44:02 -0500 George Kennedy wrote: >>> It looks like a lot of the problem is duplicate unwind. >>> Why does err_free_flow, err_free_stat etc unwinds need to exist if >>> the free_netdev is going to do same thing. >> Maybe instead do not call security_tun_dev_free_security(tun->security) >> in err_free_flow if it's going to be done anyway in tun_free_netdev(). > That won't be good either. register_netdevice() has multiple failure > modes, it may or may not call the destructor depending on where it > fails. Either the stuff that destructor undoes needs to be moved to > ndo_init (which is what destructor always pairs with), or you can check > dev->reg_state. If dev->reg_state is NETREG_UNREGISTERING that means > the destructor will be caller later. > > The ndo_init way is preferable, just cut and past the appropriate lines > preceding registration into a ndo_init callback. Thank you Jakub,
Looking at other ndo_init's to try and figure out how much before register_netdevice() should go in it.
George
| ![\](/images/icornerr.gif) |