Commit 5632c515 authored by Stephen Hemminger's avatar Stephen Hemminger Committed by David S. Miller

[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: default avatarStephen Hemminger <shemminger@linux-foundation.org>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent aad97f38
...@@ -2359,8 +2359,9 @@ static int addrconf_notify(struct notifier_block *this, unsigned long event, ...@@ -2359,8 +2359,9 @@ static int addrconf_notify(struct notifier_block *this, unsigned long event,
break; break;
case NETDEV_CHANGENAME: case NETDEV_CHANGENAME:
#ifdef CONFIG_SYSCTL
if (idev) { if (idev) {
snmp6_unregister_dev(idev);
#ifdef CONFIG_SYSCTL
addrconf_sysctl_unregister(&idev->cnf); addrconf_sysctl_unregister(&idev->cnf);
neigh_sysctl_unregister(idev->nd_parms); neigh_sysctl_unregister(idev->nd_parms);
neigh_sysctl_register(dev, idev->nd_parms, neigh_sysctl_register(dev, idev->nd_parms,
...@@ -2368,8 +2369,9 @@ static int addrconf_notify(struct notifier_block *this, unsigned long event, ...@@ -2368,8 +2369,9 @@ static int addrconf_notify(struct notifier_block *this, unsigned long event,
&ndisc_ifinfo_sysctl_change, &ndisc_ifinfo_sysctl_change,
NULL); NULL);
addrconf_sysctl_register(idev, &idev->cnf); addrconf_sysctl_register(idev, &idev->cnf);
}
#endif #endif
snmp6_register_dev(idev);
}
break; break;
} }
......
...@@ -223,6 +223,7 @@ int snmp6_unregister_dev(struct inet6_dev *idev) ...@@ -223,6 +223,7 @@ int snmp6_unregister_dev(struct inet6_dev *idev)
return -EINVAL; return -EINVAL;
remove_proc_entry(idev->stats.proc_dir_entry->name, remove_proc_entry(idev->stats.proc_dir_entry->name,
proc_net_devsnmp6); proc_net_devsnmp6);
idev->stats.proc_dir_entry = NULL;
return 0; return 0;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment