From: Jon Maloy <jon.ma...@ericsson.com> Date: Thu, 27 Oct 2016 18:51:55 -0400
> In commit 2d18ac4ba745 ("tipc: extend broadcast link initialization > criteria") we tried to fix a problem with the initial synchronization > of broadcast link acknowledge values. Unfortunately that solution is > not sufficient to solve the issue. > > We have seen it happen that LINK_PROTOCOL/STATE packets with a valid > non-zero unicast acknowledge number may bypass BCAST_PROTOCOL > initialization, NAME_DISTRIBUTOR and other STATE packets with invalid > broadcast acknowledge numbers, leading to premature opening of the > broadcast link. When the bypassed packets finally arrive, they are > inadvertently accepted, and the already correctly initialized > acknowledge number in the broadcast receive link is overwritten by > the invalid (zero) value of the said packets. After this the broadcast > link goes stale. > > We now fix this by marking the packets where we know the acknowledge > value is or may be invalid, and then ignoring the acks from those. > > To this purpose, we claim an unused bit in the header to indicate that > the value is invalid. We set the bit to 1 in the initial BCAST_PROTOCOL > synchronization packet and all initial ("bulk") NAME_DISTRIBUTOR > packets, plus those LINK_PROTOCOL packets sent out before the broadcast > links are fully synchronized. > > This minor protocol update is fully backwards compatible. > > Reported-by: John Thompson <thompa....@gmail.com> > Tested-by: John Thompson <thompa....@gmail.com> > Signed-off-by: Jon Maloy <jon.ma...@ericsson.com> Applied, thanks Jon.