path: root/net
diff options
authorBenjamin Thery <>2008-11-19 14:07:41 -0800
committerDavid S. Miller <>2008-11-19 14:07:41 -0800
commitc3e388964baa00d8c3960f23e8c8a1fb3966759e (patch)
tree29014a69e1702a641bd782838050db47b7de9c19 /net
parent7f0f598a0069d1ab072375965a4b69137233169c (diff)
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 <> Signed-off-by: David S. Miller <>
Diffstat (limited to 'net')
1 files changed, 5 insertions, 4 deletions
diff --git a/net/ipv4/ipmr.c b/net/ipv4/ipmr.c
index b42e082cc170..25924b1eb2ef 100644
--- a/net/ipv4/ipmr.c
+++ b/net/ipv4/ipmr.c
@@ -1945,13 +1945,14 @@ int __init ip_mr_init(void)
goto proc_cache_fail;
return 0;
- kmem_cache_destroy(mrt_cachep);
- unregister_netdevice_notifier(&ip_mr_notifier);
proc_net_remove(&init_net, "ip_mr_vif");
+ unregister_netdevice_notifier(&ip_mr_notifier);
+ del_timer(&ipmr_expire_timer);
+ kmem_cache_destroy(mrt_cachep);
return err;