diff options
author | Daniel Lezcano <dlezcano@fr.ibm.com> | 2007-09-25 22:16:28 -0400 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2007-10-10 19:52:14 -0400 |
commit | de3cb747ffac5f2a4a6bb156e7e2fd5229e688e5 (patch) | |
tree | fe79764b8093843934c9b9f82f573e7a92cef406 /net/decnet | |
parent | 556829657397b9b05baec6691ead4e22ee8d1567 (diff) |
[NET]: Dynamically allocate the loopback device, part 1.
This patch replaces all occurences to the static variable
loopback_dev to a pointer loopback_dev. That provides the
mindless, trivial, uninteressting change part for the dynamic
allocation for the loopback.
Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
Signed-off-by: Daniel Lezcano <dlezcano@fr.ibm.com>
Acked-By: Kirill Korotaev <dev@sw.ru>
Acked-by: Benjamin Thery <benjamin.thery@bull.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/decnet')
-rw-r--r-- | net/decnet/dn_dev.c | 4 | ||||
-rw-r--r-- | net/decnet/dn_route.c | 14 |
2 files changed, 9 insertions, 9 deletions
diff --git a/net/decnet/dn_dev.c b/net/decnet/dn_dev.c index fa24614b5a37..bcaf4c5aa68e 100644 --- a/net/decnet/dn_dev.c +++ b/net/decnet/dn_dev.c | |||
@@ -869,10 +869,10 @@ last_chance: | |||
869 | rv = dn_dev_get_first(dev, addr); | 869 | rv = dn_dev_get_first(dev, addr); |
870 | read_unlock(&dev_base_lock); | 870 | read_unlock(&dev_base_lock); |
871 | dev_put(dev); | 871 | dev_put(dev); |
872 | if (rv == 0 || dev == &loopback_dev) | 872 | if (rv == 0 || dev == loopback_dev) |
873 | return rv; | 873 | return rv; |
874 | } | 874 | } |
875 | dev = &loopback_dev; | 875 | dev = loopback_dev; |
876 | dev_hold(dev); | 876 | dev_hold(dev); |
877 | goto last_chance; | 877 | goto last_chance; |
878 | } | 878 | } |
diff --git a/net/decnet/dn_route.c b/net/decnet/dn_route.c index 70b1c3fa00f3..96fe0aa1638e 100644 --- a/net/decnet/dn_route.c +++ b/net/decnet/dn_route.c | |||
@@ -887,7 +887,7 @@ static int dn_route_output_slow(struct dst_entry **pprt, const struct flowi *old | |||
887 | .scope = RT_SCOPE_UNIVERSE, | 887 | .scope = RT_SCOPE_UNIVERSE, |
888 | } }, | 888 | } }, |
889 | .mark = oldflp->mark, | 889 | .mark = oldflp->mark, |
890 | .iif = loopback_dev.ifindex, | 890 | .iif = loopback_dev->ifindex, |
891 | .oif = oldflp->oif }; | 891 | .oif = oldflp->oif }; |
892 | struct dn_route *rt = NULL; | 892 | struct dn_route *rt = NULL; |
893 | struct net_device *dev_out = NULL, *dev; | 893 | struct net_device *dev_out = NULL, *dev; |
@@ -904,7 +904,7 @@ static int dn_route_output_slow(struct dst_entry **pprt, const struct flowi *old | |||
904 | "dn_route_output_slow: dst=%04x src=%04x mark=%d" | 904 | "dn_route_output_slow: dst=%04x src=%04x mark=%d" |
905 | " iif=%d oif=%d\n", dn_ntohs(oldflp->fld_dst), | 905 | " iif=%d oif=%d\n", dn_ntohs(oldflp->fld_dst), |
906 | dn_ntohs(oldflp->fld_src), | 906 | dn_ntohs(oldflp->fld_src), |
907 | oldflp->mark, loopback_dev.ifindex, oldflp->oif); | 907 | oldflp->mark, loopback_dev->ifindex, oldflp->oif); |
908 | 908 | ||
909 | /* If we have an output interface, verify its a DECnet device */ | 909 | /* If we have an output interface, verify its a DECnet device */ |
910 | if (oldflp->oif) { | 910 | if (oldflp->oif) { |
@@ -957,7 +957,7 @@ source_ok: | |||
957 | err = -EADDRNOTAVAIL; | 957 | err = -EADDRNOTAVAIL; |
958 | if (dev_out) | 958 | if (dev_out) |
959 | dev_put(dev_out); | 959 | dev_put(dev_out); |
960 | dev_out = &loopback_dev; | 960 | dev_out = loopback_dev; |
961 | dev_hold(dev_out); | 961 | dev_hold(dev_out); |
962 | if (!fl.fld_dst) { | 962 | if (!fl.fld_dst) { |
963 | fl.fld_dst = | 963 | fl.fld_dst = |
@@ -966,7 +966,7 @@ source_ok: | |||
966 | if (!fl.fld_dst) | 966 | if (!fl.fld_dst) |
967 | goto out; | 967 | goto out; |
968 | } | 968 | } |
969 | fl.oif = loopback_dev.ifindex; | 969 | fl.oif = loopback_dev->ifindex; |
970 | res.type = RTN_LOCAL; | 970 | res.type = RTN_LOCAL; |
971 | goto make_route; | 971 | goto make_route; |
972 | } | 972 | } |
@@ -1012,7 +1012,7 @@ source_ok: | |||
1012 | if (dev_out) | 1012 | if (dev_out) |
1013 | dev_put(dev_out); | 1013 | dev_put(dev_out); |
1014 | if (dn_dev_islocal(neigh->dev, fl.fld_dst)) { | 1014 | if (dn_dev_islocal(neigh->dev, fl.fld_dst)) { |
1015 | dev_out = &loopback_dev; | 1015 | dev_out = loopback_dev; |
1016 | res.type = RTN_LOCAL; | 1016 | res.type = RTN_LOCAL; |
1017 | } else { | 1017 | } else { |
1018 | dev_out = neigh->dev; | 1018 | dev_out = neigh->dev; |
@@ -1033,7 +1033,7 @@ source_ok: | |||
1033 | /* Possible improvement - check all devices for local addr */ | 1033 | /* Possible improvement - check all devices for local addr */ |
1034 | if (dn_dev_islocal(dev_out, fl.fld_dst)) { | 1034 | if (dn_dev_islocal(dev_out, fl.fld_dst)) { |
1035 | dev_put(dev_out); | 1035 | dev_put(dev_out); |
1036 | dev_out = &loopback_dev; | 1036 | dev_out = loopback_dev; |
1037 | dev_hold(dev_out); | 1037 | dev_hold(dev_out); |
1038 | res.type = RTN_LOCAL; | 1038 | res.type = RTN_LOCAL; |
1039 | goto select_source; | 1039 | goto select_source; |
@@ -1069,7 +1069,7 @@ select_source: | |||
1069 | fl.fld_src = fl.fld_dst; | 1069 | fl.fld_src = fl.fld_dst; |
1070 | if (dev_out) | 1070 | if (dev_out) |
1071 | dev_put(dev_out); | 1071 | dev_put(dev_out); |
1072 | dev_out = &loopback_dev; | 1072 | dev_out = loopback_dev; |
1073 | dev_hold(dev_out); | 1073 | dev_hold(dev_out); |
1074 | fl.oif = dev_out->ifindex; | 1074 | fl.oif = dev_out->ifindex; |
1075 | if (res.fi) | 1075 | if (res.fi) |