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) |
