]> git.baikalelectronics.ru Git - kernel.git/commit
tipc: fix connection refcount leak
authorYing Xue <ying.xue@windriver.com>
Thu, 6 Mar 2014 13:40:17 +0000 (14:40 +0100)
committerDavid S. Miller <davem@davemloft.net>
Thu, 6 Mar 2014 19:46:23 +0000 (14:46 -0500)
commit3f892222fd1e1aafb2ebee696b3add51f4c823dc
tree9e8da88878a1ec493a552cce5d59ecf0399499d9
parent14f5ced233e67a8b252be4a453907c4017e0037b
tipc: fix connection refcount leak

When tipc_conn_sendmsg() calls tipc_conn_lookup() to query a
connection instance, its reference count value is increased if
it's found. But subsequently if it's found that the connection is
closed, the work of sending message is not queued into its server
send workqueue, and the connection reference count is not decreased.
This will cause a reference count leak. To reproduce this problem,
an application would need to open and closes topology server
connections with high intensity.

We fix this by immediately decrementing the connection reference
count if a send fails due to the connection being closed.

Signed-off-by: Ying Xue <ying.xue@windriver.com>
Acked-by: Erik Hugne <erik.hugne@ericsson.com>
Reviewed-by: Jon Maloy <jon.maloy@ericsson.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/tipc/server.c