Messages in this thread | | | Date | Wed, 02 Sep 2015 16:27:18 -0700 (PDT) | Subject | Re: [PATCH] tipc: fix stall during bclink wakeup procedure | From | David Miller <> |
| |
From: Kolmakov Dmitriy <kolmakov.dmitriy@huawei.com> Date: Wed, 2 Sep 2015 15:33:00 +0000
> If an attempt to wake up users of broadcast link is made when there > is no enough place in send queue than it may hang up inside the > tipc_sk_rcv() function since the loop breaks only after the wake up > queue becomes empty. This can lead to complete CPU stall with the > following message generated by RCU:
I don't understand how it can loop forever.
It should either successfully deliver each packet to the socket, or respond with a TIPC_ERR_OVERLOAD.
In both cases, the SKB is dequeued from the queue and forward progress is made.
If there really is a problem somewhere in here, then two things:
1) You need to describe exactly the sequence of tests and conditions that lead to the endless loop in this code, because I cannot see it.
2) I suspect the fix is more likely to be appropriate in tipc_sk_rcv() or similar, rather than creating a dummy queue to workaround it's behavior.
Thanks.
| |