diff options
Diffstat (limited to 'net/dccp/proto.c')
| -rw-r--r-- | net/dccp/proto.c | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/net/dccp/proto.c b/net/dccp/proto.c index 0ef7061920c0..a0e38d8018f5 100644 --- a/net/dccp/proto.c +++ b/net/dccp/proto.c | |||
| @@ -20,6 +20,7 @@ | |||
| 20 | #include <linux/if_arp.h> | 20 | #include <linux/if_arp.h> |
| 21 | #include <linux/init.h> | 21 | #include <linux/init.h> |
| 22 | #include <linux/random.h> | 22 | #include <linux/random.h> |
| 23 | #include <linux/slab.h> | ||
| 23 | #include <net/checksum.h> | 24 | #include <net/checksum.h> |
| 24 | 25 | ||
| 25 | #include <net/inet_sock.h> | 26 | #include <net/inet_sock.h> |
| @@ -1036,7 +1037,7 @@ static int __init dccp_init(void) | |||
| 1036 | FIELD_SIZEOF(struct sk_buff, cb)); | 1037 | FIELD_SIZEOF(struct sk_buff, cb)); |
| 1037 | rc = percpu_counter_init(&dccp_orphan_count, 0); | 1038 | rc = percpu_counter_init(&dccp_orphan_count, 0); |
| 1038 | if (rc) | 1039 | if (rc) |
| 1039 | goto out; | 1040 | goto out_fail; |
| 1040 | rc = -ENOBUFS; | 1041 | rc = -ENOBUFS; |
| 1041 | inet_hashinfo_init(&dccp_hashinfo); | 1042 | inet_hashinfo_init(&dccp_hashinfo); |
| 1042 | dccp_hashinfo.bind_bucket_cachep = | 1043 | dccp_hashinfo.bind_bucket_cachep = |
| @@ -1125,8 +1126,9 @@ static int __init dccp_init(void) | |||
| 1125 | goto out_sysctl_exit; | 1126 | goto out_sysctl_exit; |
| 1126 | 1127 | ||
| 1127 | dccp_timestamping_init(); | 1128 | dccp_timestamping_init(); |
| 1128 | out: | 1129 | |
| 1129 | return rc; | 1130 | return 0; |
| 1131 | |||
| 1130 | out_sysctl_exit: | 1132 | out_sysctl_exit: |
| 1131 | dccp_sysctl_exit(); | 1133 | dccp_sysctl_exit(); |
| 1132 | out_ackvec_exit: | 1134 | out_ackvec_exit: |
| @@ -1135,18 +1137,19 @@ out_free_dccp_mib: | |||
| 1135 | dccp_mib_exit(); | 1137 | dccp_mib_exit(); |
| 1136 | out_free_dccp_bhash: | 1138 | out_free_dccp_bhash: |
| 1137 | free_pages((unsigned long)dccp_hashinfo.bhash, bhash_order); | 1139 | free_pages((unsigned long)dccp_hashinfo.bhash, bhash_order); |
| 1138 | dccp_hashinfo.bhash = NULL; | ||
| 1139 | out_free_dccp_locks: | 1140 | out_free_dccp_locks: |
| 1140 | inet_ehash_locks_free(&dccp_hashinfo); | 1141 | inet_ehash_locks_free(&dccp_hashinfo); |
| 1141 | out_free_dccp_ehash: | 1142 | out_free_dccp_ehash: |
| 1142 | free_pages((unsigned long)dccp_hashinfo.ehash, ehash_order); | 1143 | free_pages((unsigned long)dccp_hashinfo.ehash, ehash_order); |
| 1143 | dccp_hashinfo.ehash = NULL; | ||
| 1144 | out_free_bind_bucket_cachep: | 1144 | out_free_bind_bucket_cachep: |
| 1145 | kmem_cache_destroy(dccp_hashinfo.bind_bucket_cachep); | 1145 | kmem_cache_destroy(dccp_hashinfo.bind_bucket_cachep); |
| 1146 | dccp_hashinfo.bind_bucket_cachep = NULL; | ||
| 1147 | out_free_percpu: | 1146 | out_free_percpu: |
| 1148 | percpu_counter_destroy(&dccp_orphan_count); | 1147 | percpu_counter_destroy(&dccp_orphan_count); |
| 1149 | goto out; | 1148 | out_fail: |
| 1149 | dccp_hashinfo.bhash = NULL; | ||
| 1150 | dccp_hashinfo.ehash = NULL; | ||
| 1151 | dccp_hashinfo.bind_bucket_cachep = NULL; | ||
| 1152 | return rc; | ||
| 1150 | } | 1153 | } |
| 1151 | 1154 | ||
| 1152 | static void __exit dccp_fini(void) | 1155 | static void __exit dccp_fini(void) |
