]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
RDS: TCP: Remove kfreed tcp conn from list
authorSowmini Varadhan <sowmini.varadhan@oracle.com>
Mon, 6 Jun 2016 19:03:18 +0000 (12:03 -0700)
committerSantosh Shilimkar <santosh.shilimkar@oracle.com>
Wed, 10 Aug 2016 23:04:30 +0000 (16:04 -0700)
Orabug: 23542064

This is a backport of the upstream commit 8200a59f24ae
("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.

Original author: Pavel Emelyanov <xemul@parallels.com>

Signed-off-by: Pavel Emelyanov <xemul@openvz.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/rds/tcp.c

index fe0aaa71a48234cfff51dc5e23db5a6b7b4abf0b..499b9cebdf63567348197a35a42900683be4c635 100644 (file)
@@ -234,7 +234,13 @@ static int rds_tcp_conn_alloc(struct rds_connection *conn, gfp_t gfp)
 static void rds_tcp_conn_free(void *arg)
 {
        struct rds_tcp_connection *tc = arg;
+       unsigned long flags;
        rdsdebug("freeing tc %p\n", tc);
+
+       spin_lock_irqsave(&rds_tcp_conn_lock, flags);
+       list_del(&tc->t_tcp_node);
+       spin_unlock_irqrestore(&rds_tcp_conn_lock, flags);
+
        kmem_cache_free(rds_tcp_conn_slab, tc);
 }