diff options
author | Jon Paul Maloy <jon.maloy@ericsson.com> | 2015-07-16 16:54:21 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2015-07-20 20:41:14 -0700 |
commit | d39bbd445dc44259c77bbbc8aadcce7dcdba39cc (patch) | |
tree | c82e8d60ae0426c7e0605374e285bf606fdd4ed8 /net/tipc/node.h | |
parent | d3a43b907ae688af6cb753c53cd7de05f3c1ba85 (diff) | |
download | linux-d39bbd445dc44259c77bbbc8aadcce7dcdba39cc.tar.gz linux-d39bbd445dc44259c77bbbc8aadcce7dcdba39cc.tar.bz2 linux-d39bbd445dc44259c77bbbc8aadcce7dcdba39cc.zip |
tipc: move link input queue to tipc_node
At present, the link input queue and the name distributor receive
queues are fields aggregated in struct tipc_link. This is a hazard,
because a link might be deleted while a receiving socket still keeps
reference to one of the queues.
This commit fixes this bug. However, rather than adding yet another
reference counter to the critical data path, we move the two queues
to safe ground inside struct tipc_node, which is already protected, and
let the link code only handle references to the queues. This is also
in line with planned later changes in this area.
Reviewed-by: Ying Xue <ying.xue@windriver.com>
Signed-off-by: Jon Maloy <jon.maloy@ericsson.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/tipc/node.h')
-rw-r--r-- | net/tipc/node.h | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/net/tipc/node.h b/net/tipc/node.h index 68579c70748b..0657cbf1f5cd 100644 --- a/net/tipc/node.h +++ b/net/tipc/node.h @@ -85,13 +85,14 @@ struct tipc_node_bclink { u32 deferred_size; struct sk_buff_head deferdq; struct sk_buff *reasm_buf; - int inputq_map; + struct sk_buff_head namedq; bool recv_permitted; }; struct tipc_link_entry { struct tipc_link *link; u32 mtu; + struct sk_buff_head inputq; struct tipc_media_addr maddr; }; |