diff options
Diffstat (limited to 'net/ipv4/devinet.c')
| -rw-r--r-- | net/ipv4/devinet.c | 16 | 
1 files changed, 9 insertions, 7 deletions
diff --git a/net/ipv4/devinet.c b/net/ipv4/devinet.c index 44fdf1413e2..81c2f788529 100644 --- a/net/ipv4/devinet.c +++ b/net/ipv4/devinet.c @@ -81,7 +81,7 @@ static struct ipv4_devconf ipv4_devconf_dflt = {  static void rtmsg_ifa(int event, struct in_ifaddr *); -static struct notifier_block *inetaddr_chain; +static BLOCKING_NOTIFIER_HEAD(inetaddr_chain);  static void inet_del_ifa(struct in_device *in_dev, struct in_ifaddr **ifap,  			 int destroy);  #ifdef CONFIG_SYSCTL @@ -267,7 +267,8 @@ static void inet_del_ifa(struct in_device *in_dev, struct in_ifaddr **ifap,  				*ifap1 = ifa->ifa_next;  				rtmsg_ifa(RTM_DELADDR, ifa); -				notifier_call_chain(&inetaddr_chain, NETDEV_DOWN, ifa); +				blocking_notifier_call_chain(&inetaddr_chain, +						NETDEV_DOWN, ifa);  				inet_free_ifa(ifa);  			} else {  				promote = ifa; @@ -291,7 +292,7 @@ static void inet_del_ifa(struct in_device *in_dev, struct in_ifaddr **ifap,  	   So that, this order is correct.  	 */  	rtmsg_ifa(RTM_DELADDR, ifa1); -	notifier_call_chain(&inetaddr_chain, NETDEV_DOWN, ifa1); +	blocking_notifier_call_chain(&inetaddr_chain, NETDEV_DOWN, ifa1);  	if (promote) { @@ -303,7 +304,8 @@ static void inet_del_ifa(struct in_device *in_dev, struct in_ifaddr **ifap,  		promote->ifa_flags &= ~IFA_F_SECONDARY;  		rtmsg_ifa(RTM_NEWADDR, promote); -		notifier_call_chain(&inetaddr_chain, NETDEV_UP, promote); +		blocking_notifier_call_chain(&inetaddr_chain, +				NETDEV_UP, promote);  		for (ifa = promote->ifa_next; ifa; ifa = ifa->ifa_next) {  			if (ifa1->ifa_mask != ifa->ifa_mask ||  			    !inet_ifa_match(ifa1->ifa_address, ifa)) @@ -366,7 +368,7 @@ static int inet_insert_ifa(struct in_ifaddr *ifa)  	   Notifier will trigger FIB update, so that  	   listeners of netlink will know about new ifaddr */  	rtmsg_ifa(RTM_NEWADDR, ifa); -	notifier_call_chain(&inetaddr_chain, NETDEV_UP, ifa); +	blocking_notifier_call_chain(&inetaddr_chain, NETDEV_UP, ifa);  	return 0;  } @@ -938,12 +940,12 @@ u32 inet_confirm_addr(const struct net_device *dev, u32 dst, u32 local, int scop  int register_inetaddr_notifier(struct notifier_block *nb)  { -	return notifier_chain_register(&inetaddr_chain, nb); +	return blocking_notifier_chain_register(&inetaddr_chain, nb);  }  int unregister_inetaddr_notifier(struct notifier_block *nb)  { -	return notifier_chain_unregister(&inetaddr_chain, nb); +	return blocking_notifier_chain_unregister(&inetaddr_chain, nb);  }  /* Rename ifa_labels for a device name change. Make some effort to preserve existing  |