Hi

When we use TIPC with the bonded interface as the bearer, we are frequently
getting the soft lock issue. The source code of  TIPC is taken from RHEL
7.3, From our analysis, we figured out that retransmission in the broadcast
link is causing this. When the same packet is retransmitted more than 100
times, the TIPC broadcast link is reset to the original state, In the
process, the locks are taken in a different order which is causing the
deadlock. As a Fix (kind of workaround) we removed the resetting of the
link (when a packet is retransmitted more than 100 times) from the kernel
code to avoid soft lockup issue. We would like to know, Is this the right
fix, what is the possible side effect of this code change. If anyone here
could give some insight. It will be helpful.

Code change:-

diff --git a/tipc/link.c b/tipc/link.c

index 5f2e1d2..8775b37 100644

--- a/tipc/link.c

+++ b/tipc/link.c

@@ -1510,8 +1510,13 @@ void tipc_link_retransmit(struct tipc_link *l_ptr,
struct sk_buff *buf,

                /* Detect repeated retransmit failures on unblocked bearer
*/

                if (l_ptr->last_retransmitted == msg_seqno(msg)) {

                        if (++l_ptr->stale_count > 100) {

+                               if ((++l_ptr->stale_count % 100) == 0) {

+                                       pr_warn("Multiple Retransmission
failures (%d) on link <%s>\n",l_ptr->stale_count, l_ptr->name);

+                               }

+                               /*

                                link_retransmit_failure(l_ptr, buf);

                                return;

+                               */

                        }

                } else {

                        l_ptr->last_retransmitted = msg_seqno(msg);



Regards

_______________________________________________
tipc-discussion mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/tipc-discussion

Reply via email to