summaryrefslogtreecommitdiffstats
path: root/src/net/netdevice.c
diff options
context:
space:
mode:
authorMichael Brown2012-10-25 07:44:00 +0200
committerMichael Brown2012-10-25 07:44:00 +0200
commit88e19fcda95fa1ea59d262898001207c4406eb6d (patch)
treeda7f62de0b131854be90925536c04e8589a30ab6 /src/net/netdevice.c
parent[settings] Prefill existing setting value in "read" command (diff)
downloadipxe-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.c2
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 */