diff options
-rw-r--r-- | net/ipv4/devinet.c | 3 |
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; |