diff options
Diffstat (limited to 'net/rds/tcp.c')
-rw-r--r-- | net/rds/tcp.c | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/net/rds/tcp.c b/net/rds/tcp.c index babf4577ff7d..8e0a32001c90 100644 --- a/net/rds/tcp.c +++ b/net/rds/tcp.c | |||
@@ -41,7 +41,7 @@ | |||
41 | /* only for info exporting */ | 41 | /* only for info exporting */ |
42 | static DEFINE_SPINLOCK(rds_tcp_tc_list_lock); | 42 | static DEFINE_SPINLOCK(rds_tcp_tc_list_lock); |
43 | static LIST_HEAD(rds_tcp_tc_list); | 43 | static LIST_HEAD(rds_tcp_tc_list); |
44 | unsigned int rds_tcp_tc_count; | 44 | static unsigned int rds_tcp_tc_count; |
45 | 45 | ||
46 | /* Track rds_tcp_connection structs so they can be cleaned up */ | 46 | /* Track rds_tcp_connection structs so they can be cleaned up */ |
47 | static DEFINE_SPINLOCK(rds_tcp_conn_lock); | 47 | static DEFINE_SPINLOCK(rds_tcp_conn_lock); |
@@ -200,7 +200,7 @@ static int rds_tcp_conn_alloc(struct rds_connection *conn, gfp_t gfp) | |||
200 | struct rds_tcp_connection *tc; | 200 | struct rds_tcp_connection *tc; |
201 | 201 | ||
202 | tc = kmem_cache_alloc(rds_tcp_conn_slab, gfp); | 202 | tc = kmem_cache_alloc(rds_tcp_conn_slab, gfp); |
203 | if (tc == NULL) | 203 | if (!tc) |
204 | return -ENOMEM; | 204 | return -ENOMEM; |
205 | 205 | ||
206 | tc->t_sock = NULL; | 206 | tc->t_sock = NULL; |
@@ -221,7 +221,13 @@ static int rds_tcp_conn_alloc(struct rds_connection *conn, gfp_t gfp) | |||
221 | static void rds_tcp_conn_free(void *arg) | 221 | static void rds_tcp_conn_free(void *arg) |
222 | { | 222 | { |
223 | struct rds_tcp_connection *tc = arg; | 223 | struct rds_tcp_connection *tc = arg; |
224 | unsigned long flags; | ||
224 | rdsdebug("freeing tc %p\n", tc); | 225 | rdsdebug("freeing tc %p\n", tc); |
226 | |||
227 | spin_lock_irqsave(&rds_tcp_conn_lock, flags); | ||
228 | list_del(&tc->t_tcp_node); | ||
229 | spin_unlock_irqrestore(&rds_tcp_conn_lock, flags); | ||
230 | |||
225 | kmem_cache_free(rds_tcp_conn_slab, tc); | 231 | kmem_cache_free(rds_tcp_conn_slab, tc); |
226 | } | 232 | } |
227 | 233 | ||
@@ -243,7 +249,7 @@ static void rds_tcp_destroy_conns(void) | |||
243 | } | 249 | } |
244 | } | 250 | } |
245 | 251 | ||
246 | void rds_tcp_exit(void) | 252 | static void rds_tcp_exit(void) |
247 | { | 253 | { |
248 | rds_info_deregister_func(RDS_INFO_TCP_SOCKETS, rds_tcp_tc_info); | 254 | rds_info_deregister_func(RDS_INFO_TCP_SOCKETS, rds_tcp_tc_info); |
249 | rds_tcp_listen_stop(); | 255 | rds_tcp_listen_stop(); |
@@ -258,7 +264,6 @@ struct rds_transport rds_tcp_transport = { | |||
258 | .laddr_check = rds_tcp_laddr_check, | 264 | .laddr_check = rds_tcp_laddr_check, |
259 | .xmit_prepare = rds_tcp_xmit_prepare, | 265 | .xmit_prepare = rds_tcp_xmit_prepare, |
260 | .xmit_complete = rds_tcp_xmit_complete, | 266 | .xmit_complete = rds_tcp_xmit_complete, |
261 | .xmit_cong_map = rds_tcp_xmit_cong_map, | ||
262 | .xmit = rds_tcp_xmit, | 267 | .xmit = rds_tcp_xmit, |
263 | .recv = rds_tcp_recv, | 268 | .recv = rds_tcp_recv, |
264 | .conn_alloc = rds_tcp_conn_alloc, | 269 | .conn_alloc = rds_tcp_conn_alloc, |
@@ -266,7 +271,6 @@ struct rds_transport rds_tcp_transport = { | |||
266 | .conn_connect = rds_tcp_conn_connect, | 271 | .conn_connect = rds_tcp_conn_connect, |
267 | .conn_shutdown = rds_tcp_conn_shutdown, | 272 | .conn_shutdown = rds_tcp_conn_shutdown, |
268 | .inc_copy_to_user = rds_tcp_inc_copy_to_user, | 273 | .inc_copy_to_user = rds_tcp_inc_copy_to_user, |
269 | .inc_purge = rds_tcp_inc_purge, | ||
270 | .inc_free = rds_tcp_inc_free, | 274 | .inc_free = rds_tcp_inc_free, |
271 | .stats_info_copy = rds_tcp_stats_info_copy, | 275 | .stats_info_copy = rds_tcp_stats_info_copy, |
272 | .exit = rds_tcp_exit, | 276 | .exit = rds_tcp_exit, |
@@ -276,14 +280,14 @@ struct rds_transport rds_tcp_transport = { | |||
276 | .t_prefer_loopback = 1, | 280 | .t_prefer_loopback = 1, |
277 | }; | 281 | }; |
278 | 282 | ||
279 | int __init rds_tcp_init(void) | 283 | static int rds_tcp_init(void) |
280 | { | 284 | { |
281 | int ret; | 285 | int ret; |
282 | 286 | ||
283 | rds_tcp_conn_slab = kmem_cache_create("rds_tcp_connection", | 287 | rds_tcp_conn_slab = kmem_cache_create("rds_tcp_connection", |
284 | sizeof(struct rds_tcp_connection), | 288 | sizeof(struct rds_tcp_connection), |
285 | 0, 0, NULL); | 289 | 0, 0, NULL); |
286 | if (rds_tcp_conn_slab == NULL) { | 290 | if (!rds_tcp_conn_slab) { |
287 | ret = -ENOMEM; | 291 | ret = -ENOMEM; |
288 | goto out; | 292 | goto out; |
289 | } | 293 | } |