aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--net/ipv4/devinet.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/net/ipv4/devinet.c b/net/ipv4/devinet.c
index 2523001f4c9a..d5a4553bebc3 100644
--- a/net/ipv4/devinet.c
+++ b/net/ipv4/devinet.c
@@ -375,6 +375,7 @@ static void __inet_del_ifa(struct in_device *in_dev, struct in_ifaddr **ifap,
375 blocking_notifier_call_chain(&inetaddr_chain, NETDEV_DOWN, ifa1); 375 blocking_notifier_call_chain(&inetaddr_chain, NETDEV_DOWN, ifa1);
376 376
377 if (promote) { 377 if (promote) {
378 struct in_ifaddr *next_sec = promote->ifa_next;
378 379
379 if (prev_prom) { 380 if (prev_prom) {
380 prev_prom->ifa_next = promote->ifa_next; 381 prev_prom->ifa_next = promote->ifa_next;
@@ -386,7 +387,7 @@ static void __inet_del_ifa(struct in_device *in_dev, struct in_ifaddr **ifap,
386 rtmsg_ifa(RTM_NEWADDR, promote, nlh, pid); 387 rtmsg_ifa(RTM_NEWADDR, promote, nlh, pid);
387 blocking_notifier_call_chain(&inetaddr_chain, 388 blocking_notifier_call_chain(&inetaddr_chain,
388 NETDEV_UP, promote); 389 NETDEV_UP, promote);
389 for (ifa = promote->ifa_next; ifa; ifa = ifa->ifa_next) { 390 for (ifa = next_sec; ifa; ifa = ifa->ifa_next) {
390 if (ifa1->ifa_mask != ifa->ifa_mask || 391 if (ifa1->ifa_mask != ifa->ifa_mask ||
391 !inet_ifa_match(ifa1->ifa_address, ifa)) 392 !inet_ifa_match(ifa1->ifa_address, ifa))
392 continue; 393 continue;