On 02/14/2019 05:08 PM, Eric Dumazet wrote:
> 
> 
> On 02/14/2019 03:54 PM, 배석진 wrote:
>>> I do not believe this patch is needed.
>>>  
>>> You probably hit another more serious bug, but since you do not post the 
>>> full stack trace
>>> it is hard to help.
>>>  
>>> Are you using vti tunnel ?
>>
>> there's no working logs of vpn/vti/tun on platform or kernel history.
>> and callstack has no functions about that.
>> it looks like simple ipv4 usage.
>>
>> attaching full dump info.
>> no additional bug or warning on entire kernel history.
>> anything about tun or kasan even onther.
>>
>> thanks.
>>
>>
>> <4>[60392.948306] I[1:    ksoftirqd/1:   19] ------------[ cut here 
>> ]------------
>> <0>[60392.948334] I[1:    ksoftirqd/1:   19] kernel BUG at 
>> net/ipv4/tcp_ipv4.c:519!
> 
> What the code looks like at line 519 of net/ipv4/tcp_ipv4.c ?
> 
> This is not a pristine kernel, anything could be wrong, you might have missed 
> some critical backports.

The current code checks if icsk->icsk_backoff is not zero, so it looks like we 
have to move
some code like this.

It looks a silly bug to have no packet in write/rtx queues, and a non zero 
icsk_backoff.



diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c
index 
2079145a3b7c5f498af429c9a8289342e4421fca..cf3c5095c10e8e7e56621beae2f93c93de184489
 100644
--- a/net/ipv4/tcp.c
+++ b/net/ipv4/tcp.c
@@ -2528,6 +2528,7 @@ void tcp_write_queue_purge(struct sock *sk)
        sk_mem_reclaim(sk);
        tcp_clear_all_retrans_hints(tcp_sk(sk));
        tcp_sk(sk)->packets_out = 0;
+       inet_csk(sk)->icsk_backoff = 0;
 }
 
 int tcp_disconnect(struct sock *sk, int flags)
@@ -2576,7 +2577,6 @@ int tcp_disconnect(struct sock *sk, int flags)
        tp->write_seq += tp->max_window + 2;
        if (tp->write_seq == 0)
                tp->write_seq = 1;
-       icsk->icsk_backoff = 0;
        tp->snd_cwnd = 2;
        icsk->icsk_probes_out = 0;
        tp->snd_ssthresh = TCP_INFINITE_SSTHRESH;


Reply via email to