diff --git a/src/usr/autoboot.c b/src/usr/autoboot.c index 51b07e125..62e90ecd0 100644 --- a/src/usr/autoboot.c +++ b/src/usr/autoboot.c @@ -210,18 +210,19 @@ int uriboot ( struct uri *filename, struct uri **root_paths, } /** - * Close all open net devices + * Close all but one network device * * Called before a fresh boot attempt in order to free up memory. We * don't just close the device immediately after the boot fails, * because there may still be TCP connections in the process of * closing. */ -static void close_all_netdevs ( void ) { - struct net_device *netdev; +static void close_other_netdevs ( struct net_device *netdev ) { + struct net_device *other; - for_each_netdev ( netdev ) { - ifclose ( netdev ); + for_each_netdev ( other ) { + if ( other != netdev ) + ifclose ( other ); } } @@ -388,7 +389,7 @@ int netboot ( struct net_device *netdev ) { int rc; /* Close all other network devices */ - close_all_netdevs(); + close_other_netdevs ( netdev ); /* Open device and display device status */ if ( ( rc = ifopen ( netdev ) ) != 0 )