Răsfoiți Sursa

[IPV4]: Swap the ifa allocation with the"ipv4_devconf_setall" call

According to Herbert, the ipv4_devconf_setall should be called
only when the ifa is added to the device. However, failed
ifa allocation may bring things into inconsistent state.

Move the call to ipv4_devconf_setall after the ifa allocation.

Fits both net-2.6 (with offsets) and net-2.6.25 (cleanly).

Signed-off-by: Pavel Emelyanov <xemul@openvz.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Pavel Emelyanov 17 ani în urmă
părinte
comite
a4e65d36a9
1 a modificat fișierele cu 1 adăugiri și 2 ștergeri
  1. 1 2
      net/ipv4/devinet.c

+ 1 - 2
net/ipv4/devinet.c

@@ -516,8 +516,6 @@ static struct in_ifaddr *rtm_to_ifaddr(struct nlmsghdr *nlh)
 		goto errout;
 		goto errout;
 	}
 	}
 
 
-	ipv4_devconf_setall(in_dev);
-
 	ifa = inet_alloc_ifa();
 	ifa = inet_alloc_ifa();
 	if (ifa == NULL) {
 	if (ifa == NULL) {
 		/*
 		/*
@@ -528,6 +526,7 @@ static struct in_ifaddr *rtm_to_ifaddr(struct nlmsghdr *nlh)
 		goto errout;
 		goto errout;
 	}
 	}
 
 
+	ipv4_devconf_setall(in_dev);
 	in_dev_hold(in_dev);
 	in_dev_hold(in_dev);
 
 
 	if (tb[IFA_ADDRESS] == NULL)
 	if (tb[IFA_ADDRESS] == NULL)