tipc: fix connection refcount leak
authorYing Xue <ying.xue@windriver.com>
Thu, 6 Mar 2014 13:40:17 +0000 (14:40 +0100)
committerSeokYeon Hwang <syeon.hwang@samsung.com>
Wed, 7 May 2014 06:30:56 +0000 (15:30 +0900)
commit47b9df7d49ff55ef932869d8666c90fa434f2785
tree7ac34a717570ca2cfe5eb8c51c8e2113db3d9b36
parent881f6d703a5c2e162c032d346f39e65d46f49ba6
tipc: fix connection refcount leak

[ Upstream commit 4652edb70e8a7eebbe47fa931940f65522c36e8f ]

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>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
net/tipc/server.c