[PATCH] ipv6: track device renames in snmp6
When network device's are renamed, the IPV6 snmp6 code gets confused. It doesn't track name changes so it will OOPS when network device's are removed. The fix is trivial, just unregister/re-register in notify handler. Signed-off-by: Stephen Hemminger <shemminger@linux-foundation.org> Signed-off-by: Chris Wright <chrisw@sous-sol.org>
This commit is contained in:
committed by
Chris Wright
parent
8d8b10482f
commit
55c2dacf60
+4
-2
@@ -2281,8 +2281,9 @@ static int addrconf_notify(struct notifier_block *this, unsigned long event,
|
||||
break;
|
||||
|
||||
case NETDEV_CHANGENAME:
|
||||
#ifdef CONFIG_SYSCTL
|
||||
if (idev) {
|
||||
snmp6_unregister_dev(idev);
|
||||
#ifdef CONFIG_SYSCTL
|
||||
addrconf_sysctl_unregister(&idev->cnf);
|
||||
neigh_sysctl_unregister(idev->nd_parms);
|
||||
neigh_sysctl_register(dev, idev->nd_parms,
|
||||
@@ -2290,8 +2291,9 @@ static int addrconf_notify(struct notifier_block *this, unsigned long event,
|
||||
&ndisc_ifinfo_sysctl_change,
|
||||
NULL);
|
||||
addrconf_sysctl_register(idev, &idev->cnf);
|
||||
}
|
||||
#endif
|
||||
snmp6_register_dev(idev);
|
||||
}
|
||||
break;
|
||||
};
|
||||
|
||||
|
||||
@@ -236,6 +236,7 @@ int snmp6_unregister_dev(struct inet6_dev *idev)
|
||||
return -EINVAL;
|
||||
remove_proc_entry(idev->stats.proc_dir_entry->name,
|
||||
proc_net_devsnmp6);
|
||||
idev->stats.proc_dir_entry = NULL;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user