Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fe8ff6b5 authored by Zach Brown's avatar Zach Brown Committed by Andy Grover
Browse files

RDS: lock rds_conn_count decrement in rds_conn_destroy()



rds_conn_destroy() can race with all other modifications of the
rds_conn_count but it was modifying the count without locking.

Signed-off-by: default avatarZach Brown <zach.brown@oracle.com>
parent ea819867
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -313,6 +313,7 @@ void rds_conn_shutdown(struct rds_connection *conn)
void rds_conn_destroy(struct rds_connection *conn)
{
	struct rds_message *rm, *rtmp;
	unsigned long flags;

	rdsdebug("freeing conn %p for %pI4 -> "
		 "%pI4\n", conn, &conn->c_laddr,
@@ -350,7 +351,9 @@ void rds_conn_destroy(struct rds_connection *conn)
	BUG_ON(!list_empty(&conn->c_retrans));
	kmem_cache_free(rds_conn_slab, conn);

	spin_lock_irqsave(&rds_conn_lock, flags);
	rds_conn_count--;
	spin_unlock_irqrestore(&rds_conn_lock, flags);
}
EXPORT_SYMBOL_GPL(rds_conn_destroy);