net: Guaranetee the proper ordering of the loopback device. v2
authorEric W. Biederman <ebiederm@maxwell.aristanetworks.com>
Sat, 8 Nov 2008 06:54:20 +0000 (22:54 -0800)
committerDavid S. Miller <davem@davemloft.net>
Sat, 8 Nov 2008 06:54:20 +0000 (22:54 -0800)
commit505d4f73dda9e20d59da05008f1f5eb432613e71
treea30032d6474ce1d8dea1853c1907f4c3bdd8a19c
parent5d6d480908300a0c0b3be8b58567dfcef62c83a5
net: Guaranetee the proper ordering of the loopback device. v2

I was recently hunting a bug that occurred in network namespace
cleanup.  In looking at the code it became apparrent that we have
and will continue to have cases where if we have anything going
on in a network namespace there will be assumptions that the
loopback device is present.   Things like sending igmp unsubscribe
messages when we bring down network devices invokes the routing
code which assumes that at least the loopback driver is present.

Therefore to avoid magic initcall ordering hackery that is hard
to follow and hard to get right insert a call to register the
loopback device directly from net_dev_init().    This guarantes
that the loopback device is the first device registered and
the last network device to go away.

But do it carefully so we register the loopback device after
we clear dev_boot_phase.

Signed-off-by: Eric W. Biederman <ebiederm@maxwell.aristanetworks.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/loopback.c
include/linux/netdevice.h
net/core/dev.c