net: fix ip_mr_init() error path
Similarly to IPv6 ip6_mr_init() (fixed last week), the order of cleanup operations in the error/exit section of ip_mr_init() is completely inversed. It should be the other way around. Also a del_timer() is missing in the error path. I should have guessed last week that this same error existed in ipmr.c too, as ip6mr.c is largely inspired by ipmr.c. Signed-off-by: Benjamin Thery <benjamin.thery@bull.net> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
7f0f598a00
commit
c3e388964b
@@ -1945,13 +1945,14 @@ int __init ip_mr_init(void)
|
|||||||
goto proc_cache_fail;
|
goto proc_cache_fail;
|
||||||
#endif
|
#endif
|
||||||
return 0;
|
return 0;
|
||||||
reg_notif_fail:
|
|
||||||
kmem_cache_destroy(mrt_cachep);
|
|
||||||
#ifdef CONFIG_PROC_FS
|
#ifdef CONFIG_PROC_FS
|
||||||
proc_vif_fail:
|
|
||||||
unregister_netdevice_notifier(&ip_mr_notifier);
|
|
||||||
proc_cache_fail:
|
proc_cache_fail:
|
||||||
proc_net_remove(&init_net, "ip_mr_vif");
|
proc_net_remove(&init_net, "ip_mr_vif");
|
||||||
|
proc_vif_fail:
|
||||||
|
unregister_netdevice_notifier(&ip_mr_notifier);
|
||||||
#endif
|
#endif
|
||||||
|
reg_notif_fail:
|
||||||
|
del_timer(&ipmr_expire_timer);
|
||||||
|
kmem_cache_destroy(mrt_cachep);
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user