• Jon Paul Maloy's avatar
    tipc: fix bug in link failover handling · e6441bae
    Jon Paul Maloy authored
    In commit c637c103
    ("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: default avatarJon Maloy <jon.maloy@ericsson.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    e6441bae
link.c 64.9 KB