tipc: fix random link reset problem
In the function tipc_sk_rcv(), the stack variable 'err' is only initialized to TIPC_ERR_NO_PORT for the first iteration over the link input queue. If a chain of messages are received from a link, failure to lookup the socket for any but the first message will cause the message to bounce back out on a random link. We fix this by properly initializing err. Signed-off-by: Erik Hugne <erik.hugne@ericsson.com> Signed-off-by: Jon Maloy <jon.maloy@ericsson.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Родитель
def81f69bf
Коммит
9871b27f67
|
@ -1764,13 +1764,14 @@ static int tipc_sk_enqueue(struct sk_buff_head *inputq, struct sock *sk,
|
|||
int tipc_sk_rcv(struct net *net, struct sk_buff_head *inputq)
|
||||
{
|
||||
u32 dnode, dport = 0;
|
||||
int err = -TIPC_ERR_NO_PORT;
|
||||
int err;
|
||||
struct sk_buff *skb;
|
||||
struct tipc_sock *tsk;
|
||||
struct tipc_net *tn;
|
||||
struct sock *sk;
|
||||
|
||||
while (skb_queue_len(inputq)) {
|
||||
err = -TIPC_ERR_NO_PORT;
|
||||
skb = NULL;
|
||||
dport = tipc_skb_peek_port(inputq, dport);
|
||||
tsk = tipc_sk_lookup(net, dport);
|
||||
|
|
Загрузка…
Ссылка в новой задаче