diff options
author | Herbert Xu <herbert@gondor.apana.org.au> | 2007-07-30 20:04:52 -0400 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2007-07-31 05:28:16 -0400 |
commit | b217d616a15fcfb3caf2a72c1a071c6d3f182f8d (patch) | |
tree | 301422d7c0fba653dfb5e32c80fedc2cede627e3 /net/ipv4/devinet.c | |
parent | fcc5a03ac42564e9e255c1134dda47442289e466 (diff) |
[IPV4/IPV6]: Fail registration if inet device construction fails
Now that netdev notifications can fail, we can use this to signal
errors during registration for IPv4/IPv6. In particular, if we
fail to allocate memory for the inet device, we can fail the netdev
registration.
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv4/devinet.c')
-rw-r--r-- | net/ipv4/devinet.c | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/net/ipv4/devinet.c b/net/ipv4/devinet.c index abf6352f990f..5b77bdaa57dd 100644 --- a/net/ipv4/devinet.c +++ b/net/ipv4/devinet.c | |||
@@ -1056,10 +1056,9 @@ static int inetdev_event(struct notifier_block *this, unsigned long event, | |||
1056 | if (!in_dev) { | 1056 | if (!in_dev) { |
1057 | if (event == NETDEV_REGISTER) { | 1057 | if (event == NETDEV_REGISTER) { |
1058 | in_dev = inetdev_init(dev); | 1058 | in_dev = inetdev_init(dev); |
1059 | if (!in_dev) | ||
1060 | return notifier_from_errno(-ENOMEM); | ||
1059 | if (dev == &loopback_dev) { | 1061 | if (dev == &loopback_dev) { |
1060 | if (!in_dev) | ||
1061 | panic("devinet: " | ||
1062 | "Failed to create loopback\n"); | ||
1063 | IN_DEV_CONF_SET(in_dev, NOXFRM, 1); | 1062 | IN_DEV_CONF_SET(in_dev, NOXFRM, 1); |
1064 | IN_DEV_CONF_SET(in_dev, NOPOLICY, 1); | 1063 | IN_DEV_CONF_SET(in_dev, NOPOLICY, 1); |
1065 | } | 1064 | } |