linux/net/tipc
Jon Paul Maloy e6441bae32 tipc: fix bug in link failover handling
In commit c637c10355
("tipc: resolve race problem at unicast message reception") we
introduced a new mechanism for delivering buffers upwards from link
to socket layer.

That code contains a bug in how we handle the new link input queue
during failover. When a link is reset, some of its users may be blocked
because of congestion, and in order to resolve this, we add any pending
wakeup pseudo messages to the link's input queue, and deliver them to
the socket. This misses the case where the other, remaining link also
may have congested users. Currently, the owner node's reference to the
remaining link's input queue is unconditionally overwritten by the
reset link's input queue. This has the effect that wakeup events from
the remaining link may be unduely delayed (but not lost) for a
potentially long period.

We fix this by adding the pending events from the reset link to the
input queue that is currently referenced by the node, whichever one
it is.

This commit should be applied to both net and net-next.

Signed-off-by: Jon Maloy <jon.maloy@ericsson.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2015-03-09 16:20:41 -04:00
..
addr.c tipc: make tipc node address support net namespace 2015-01-12 16:24:33 -05:00
addr.h tipc: make tipc node address support net namespace 2015-01-12 16:24:33 -05:00
bcast.c tipc: convert legacy nl link stat to nl compat 2015-02-09 13:20:47 -08:00
bcast.h tipc: convert legacy nl link stat to nl compat 2015-02-09 13:20:47 -08:00
bearer.c tipc: remove tipc_snprintf 2015-02-09 13:20:49 -08:00
bearer.h tipc: convert legacy nl media dump to nl compat 2015-02-09 13:20:48 -08:00
core.c tipc: nl compat add noop and remove legacy nl framework 2015-02-09 13:20:49 -08:00
core.h tipc: remove tipc_snprintf 2015-02-09 13:20:49 -08:00
discover.c tipc: reduce usage of context info in socket and link 2015-02-05 16:00:01 -08:00
discover.h tipc: involve namespace infrastructure 2015-01-12 16:24:32 -05:00
eth_media.c tipc: improve and extend media address conversion functions 2014-05-14 15:19:48 -04:00
ib_media.c tipc: improve and extend media address conversion functions 2014-05-14 15:19:48 -04:00
Kconfig tipc: convert tipc reference table to use generic rhashtable 2015-01-08 19:47:14 -08:00
link.c tipc: fix bug in link failover handling 2015-03-09 16:20:41 -04:00
link.h tipc: convert legacy nl link stat reset to nl compat 2015-02-09 13:20:48 -08:00
Makefile tipc: remove tipc_snprintf 2015-02-09 13:20:49 -08:00
msg.c tipc: resolve race problem at unicast message reception 2015-02-05 16:00:02 -08:00
msg.h tipc: eliminate race condition at multicast reception 2015-02-05 16:00:03 -08:00
name_distr.c tipc: resolve race problem at unicast message reception 2015-02-05 16:00:02 -08:00
name_distr.h tipc: resolve race problem at unicast message reception 2015-02-05 16:00:02 -08:00
name_table.c tipc: nl compat add noop and remove legacy nl framework 2015-02-09 13:20:49 -08:00
name_table.h tipc: convert legacy nl name table dump to nl compat 2015-02-09 13:20:48 -08:00
net.c tipc: nl compat add noop and remove legacy nl framework 2015-02-09 13:20:49 -08:00
net.h tipc: make tipc node table aware of net namespace 2015-01-12 16:24:32 -05:00
netlink_compat.c tipc: nl compat add noop and remove legacy nl framework 2015-02-09 13:20:49 -08:00
netlink.c tipc: move and rename the legacy nl api to "nl compat" 2015-02-09 13:20:47 -08:00
netlink.h tipc: move and rename the legacy nl api to "nl compat" 2015-02-09 13:20:47 -08:00
node.c tipc: nl compat add noop and remove legacy nl framework 2015-02-09 13:20:49 -08:00
node.h tipc: convert legacy nl node dump to nl compat 2015-02-09 13:20:49 -08:00
server.c tipc: make subscriber server support net namespace 2015-01-12 16:24:33 -05:00
server.h tipc: make subscriber server support net namespace 2015-01-12 16:24:33 -05:00
socket.c rhashtable: remove indirection for grow/shrink decision functions 2015-02-27 16:06:02 -05:00
socket.h tipc: convert legacy nl socket dump to nl compat 2015-02-09 13:20:48 -08:00
subscr.c tipc: make subscriber server support net namespace 2015-01-12 16:24:33 -05:00
subscr.h tipc: make subscriber server support net namespace 2015-01-12 16:24:33 -05:00
sysctl.c tipc: add name distributor resiliency queue 2014-09-01 17:51:48 -07:00