diff options
| author | Pavel Emelyanov <xemul@parallels.com> | 2010-11-01 21:54:01 -0400 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2010-11-03 21:50:07 -0400 |
| commit | 8200a59f24aeca379660f80658a8c0c343ca5c31 (patch) | |
| tree | fc21336c6dd33ee96d7cf9f07f20132d4a46994e /net | |
| parent | 58c490babd4b425310363cbd1f406d7e508f77a5 (diff) | |
rds: Remove kfreed tcp conn from list
All the rds_tcp_connection objects are stored list, but when
being freed it should be removed from there.
Signed-off-by: Pavel Emelyanov <xemul@openvz.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net')
| -rw-r--r-- | net/rds/tcp.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/net/rds/tcp.c b/net/rds/tcp.c index 08a8c6cf2d10..8e0a32001c90 100644 --- a/net/rds/tcp.c +++ b/net/rds/tcp.c | |||
| @@ -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 | ||
