From: Sowmini Varadhan Date: Mon, 6 Jun 2016 19:03:18 +0000 (-0700) Subject: RDS: TCP: Remove kfreed tcp conn from list X-Git-Tag: v4.1.12-92~87^2~22 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=b3d8099d6b4ec1a4a38ce09ea18651b05cb2885c;p=users%2Fjedix%2Flinux-maple.git RDS: TCP: Remove kfreed tcp conn from list 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 Signed-off-by: Pavel Emelyanov Signed-off-by: David S. Miller --- diff --git a/net/rds/tcp.c b/net/rds/tcp.c index fe0aaa71a482..499b9cebdf63 100644 --- a/net/rds/tcp.c +++ b/net/rds/tcp.c @@ -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); }