diff --git a/net/ipv4/devinet.c b/net/ipv4/devinet.c index e84d3cf92247..2ed4c706ca9e 100644 --- a/net/ipv4/devinet.c +++ b/net/ipv4/devinet.c @@ -340,18 +340,6 @@ static void inetdev_destroy(struct in_device *in_dev) in_dev_put(in_dev); } -static int __init inet_blackhole_dev_init(void) -{ - struct in_device *in_dev; - - rtnl_lock(); - in_dev = inetdev_init(blackhole_netdev); - rtnl_unlock(); - - return PTR_ERR_OR_ZERO(in_dev); -} -late_initcall(inet_blackhole_dev_init); - int inet_addr_onlink(struct in_device *in_dev, __be32 a, __be32 b) { const struct in_ifaddr *ifa; @@ -2974,4 +2962,9 @@ void __init devinet_init(void) panic("Unable to register inet_af_ops\n"); rtnl_register_many(devinet_rtnl_msg_handlers); + + rtnl_lock(); + if (IS_ERR(inetdev_init(blackhole_netdev))) + panic("IP: failed to allocate in_device for blackhole_netdev\n"); + rtnl_unlock(); }