diff options
author | Michael Brown | 2012-10-25 07:44:00 +0200 |
---|---|---|
committer | Michael Brown | 2012-10-25 07:44:00 +0200 |
commit | 88e19fcda95fa1ea59d262898001207c4406eb6d (patch) | |
tree | da7f62de0b131854be90925536c04e8589a30ab6 /src/net/netdevice.c | |
parent | [settings] Prefill existing setting value in "read" command (diff) | |
download | ipxe-88e19fcda95fa1ea59d262898001207c4406eb6d.tar.gz ipxe-88e19fcda95fa1ea59d262898001207c4406eb6d.tar.xz ipxe-88e19fcda95fa1ea59d262898001207c4406eb6d.zip |
[netdevice] Clear network device setting before unregistering
Avoid memory leaks by clearing any (non-child) settings immediately
before unregistering the network device settings block.
Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/net/netdevice.c')
-rw-r--r-- | src/net/netdevice.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/src/net/netdevice.c b/src/net/netdevice.c index bea06752..ec3456a9 100644 --- a/src/net/netdevice.c +++ b/src/net/netdevice.c @@ -486,6 +486,7 @@ int register_netdev ( struct net_device *netdev ) { err_probe: for_each_table_entry_continue_reverse ( driver, NET_DRIVERS ) driver->remove ( netdev ); + clear_settings ( netdev_settings ( netdev ) ); unregister_settings ( netdev_settings ( netdev ) ); err_register_settings: return rc; @@ -570,6 +571,7 @@ void unregister_netdev ( struct net_device *netdev ) { driver->remove ( netdev ); /* Unregister per-netdev configuration settings */ + clear_settings ( netdev_settings ( netdev ) ); unregister_settings ( netdev_settings ( netdev ) ); /* Remove from device list */ |