diff options
Diffstat (limited to 'net/ipv6/xfrm6_policy.c')
-rw-r--r-- | net/ipv6/xfrm6_policy.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/net/ipv6/xfrm6_policy.c b/net/ipv6/xfrm6_policy.c index 5f8e128c512d..2a0bbda2c76a 100644 --- a/net/ipv6/xfrm6_policy.c +++ b/net/ipv6/xfrm6_policy.c | |||
@@ -389,11 +389,17 @@ int __init xfrm6_init(void) | |||
389 | if (ret) | 389 | if (ret) |
390 | goto out_policy; | 390 | goto out_policy; |
391 | 391 | ||
392 | ret = xfrm6_protocol_init(); | ||
393 | if (ret) | ||
394 | goto out_state; | ||
395 | |||
392 | #ifdef CONFIG_SYSCTL | 396 | #ifdef CONFIG_SYSCTL |
393 | register_pernet_subsys(&xfrm6_net_ops); | 397 | register_pernet_subsys(&xfrm6_net_ops); |
394 | #endif | 398 | #endif |
395 | out: | 399 | out: |
396 | return ret; | 400 | return ret; |
401 | out_state: | ||
402 | xfrm6_state_fini(); | ||
397 | out_policy: | 403 | out_policy: |
398 | xfrm6_policy_fini(); | 404 | xfrm6_policy_fini(); |
399 | goto out; | 405 | goto out; |
@@ -404,6 +410,7 @@ void xfrm6_fini(void) | |||
404 | #ifdef CONFIG_SYSCTL | 410 | #ifdef CONFIG_SYSCTL |
405 | unregister_pernet_subsys(&xfrm6_net_ops); | 411 | unregister_pernet_subsys(&xfrm6_net_ops); |
406 | #endif | 412 | #endif |
413 | xfrm6_protocol_fini(); | ||
407 | xfrm6_policy_fini(); | 414 | xfrm6_policy_fini(); |
408 | xfrm6_state_fini(); | 415 | xfrm6_state_fini(); |
409 | dst_entries_destroy(&xfrm6_dst_ops); | 416 | dst_entries_destroy(&xfrm6_dst_ops); |