CC: [email protected]
CC: [email protected]
BCC: [email protected]
CC: Linux Memory Management List <[email protected]>
TO: Menglong Dong <[email protected]>
CC: Mengen Sun <[email protected]>
CC: Hao Peng <[email protected]>
CC: Eric Dumazet <[email protected]>
CC: David Ahern <[email protected]>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git 
master
head:   44948bd49d878dad6c9707e34f4a06df73c3a800
commit: a7ec381049c0d1f03e342063d75f5c3b314d0ec2 [6903/8646] net: tcp: use 
tcp_drop_reason() for tcp_data_queue()
:::::: branch date: 26 hours ago
:::::: commit date: 6 days ago
config: x86_64-randconfig-c007 
(https://download.01.org/0day-ci/archive/20220226/[email protected]/config)
compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project 
d271fc04d5b97b12e6b797c6067d3c96a8d7470e)
reproduce (this is a W=1 build):
        wget 
https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O 
~/bin/make.cross
        chmod +x ~/bin/make.cross
        # 
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/?id=a7ec381049c0d1f03e342063d75f5c3b314d0ec2
        git remote add linux-next 
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
        git fetch --no-tags linux-next master
        git checkout a7ec381049c0d1f03e342063d75f5c3b314d0ec2
        # save the config file to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64 
clang-analyzer 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <[email protected]>


clang-analyzer warnings: (new ones prefixed by >>)
           ^
   fs/ocfs2/extent_map.c:491:7: note: Assuming the condition is false
                   if (i == (le16_to_cpu(el->l_next_free_rec) - 1)) {
                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   fs/ocfs2/extent_map.c:491:3: note: Taking false branch
                   if (i == (le16_to_cpu(el->l_next_free_rec) - 1)) {
                   ^
   fs/ocfs2/extent_map.c:512:2: note: Returning without writing to '*hole_len'
           return ret;
           ^
   fs/ocfs2/extent_map.c:512:2: note: Returning zero (loaded from 'ret'), which 
participates in a condition later
           return ret;
           ^~~~~~~~~~
   fs/ocfs2/extent_map.c:899:9: note: Returning from 
'ocfs2_get_clusters_nocache'
                   ret = ocfs2_get_clusters_nocache(inode, di_bh, cpos, 
&hole_size,
                         
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   fs/ocfs2/extent_map.c:901:7: note: 'ret' is 0
                   if (ret) {
                       ^~~
   fs/ocfs2/extent_map.c:901:3: note: Taking false branch
                   if (ret) {
                   ^
   fs/ocfs2/extent_map.c:909:7: note: Assuming field 'e_blkno' is equal to 0
                   if (rec.e_blkno == 0ULL) {
                       ^~~~~~~~~~~~~~~~~~~
   fs/ocfs2/extent_map.c:909:3: note: Taking true branch
                   if (rec.e_blkno == 0ULL) {
                   ^
   fs/ocfs2/extent_map.c:910:9: note: Assigned value is garbage or undefined
                           clen = hole_size;
                                ^ ~~~~~~~~~
   Suppressed 5 warnings (5 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   3 warnings generated.
   Suppressed 3 warnings (3 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   3 warnings generated.
   Suppressed 3 warnings (3 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   3 warnings generated.
   Suppressed 3 warnings (3 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   3 warnings generated.
   Suppressed 3 warnings (3 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   3 warnings generated.
   Suppressed 3 warnings (3 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   3 warnings generated.
   Suppressed 3 warnings (3 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   5 warnings generated.
   Suppressed 5 warnings (5 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   3 warnings generated.
   Suppressed 3 warnings (3 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   4 warnings generated.
   Suppressed 4 warnings (4 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   5 warnings generated.
   Suppressed 5 warnings (5 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   5 warnings generated.
   Suppressed 5 warnings (5 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   6 warnings generated.
   Suppressed 6 warnings (5 in non-user code, 1 with check filters).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   5 warnings generated.
   Suppressed 5 warnings (5 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   5 warnings generated.
   Suppressed 5 warnings (5 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   5 warnings generated.
   Suppressed 5 warnings (5 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   4 warnings generated.
   Suppressed 4 warnings (4 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   4 warnings generated.
   Suppressed 4 warnings (4 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   4 warnings generated.
   Suppressed 4 warnings (4 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   5 warnings generated.
   Suppressed 5 warnings (5 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   5 warnings generated.
   Suppressed 5 warnings (5 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   14 warnings generated.
   net/ipv4/tcp_input.c:3404:3: warning: Value stored to 'icsk' is never read 
[clang-analyzer-deadcode.DeadStores]
                   icsk = inet_csk(sk);
                   ^      ~~~~~~~~~~~~
   net/ipv4/tcp_input.c:3404:3: note: Value stored to 'icsk' is never read
                   icsk = inet_csk(sk);
                   ^      ~~~~~~~~~~~~
>> net/ipv4/tcp_input.c:5010:2: warning: Value stored to 'reason' is never read 
>> [clang-analyzer-deadcode.DeadStores]
           reason = SKB_DROP_REASON_NOT_SPECIFIED;
           ^        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   net/ipv4/tcp_input.c:5010:2: note: Value stored to 'reason' is never read
           reason = SKB_DROP_REASON_NOT_SPECIFIED;
           ^        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   net/ipv4/tcp_input.c:5334:11: warning: Access to field 'truesize' results in 
a dereference of a null pointer [clang-analyzer-core.NullDereference]
                   goal -= rb_to_skb(node)->truesize;
                           ^
   include/linux/skbuff.h:3663:23: note: expanded from macro 'rb_to_skb'
   #define rb_to_skb(rb) rb_entry_safe(rb, struct sk_buff, rbnode)
                         ^
   include/linux/rbtree.h:78:2: note: expanded from macro 'rb_entry_safe'
           ({ typeof(ptr) ____ptr = (ptr); \
           ^
   net/ipv4/tcp_input.c:5325:6: note: Left side of '||' is false
           if (RB_EMPTY_ROOT(&tp->out_of_order_queue))
               ^
   include/linux/rbtree.h:30:31: note: expanded from macro 'RB_EMPTY_ROOT'
   #define RB_EMPTY_ROOT(root)  (READ_ONCE((root)->rb_node) == NULL)
                                 ^
   include/asm-generic/rwonce.h:49:2: note: expanded from macro 'READ_ONCE'
           compiletime_assert_rwonce_type(x);                              \
           ^
   include/asm-generic/rwonce.h:36:21: note: expanded from macro 
'compiletime_assert_rwonce_type'
           compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long 
long),  \
                              ^
   include/linux/compiler_types.h:316:3: note: expanded from macro 
'__native_word'
           (sizeof(t) == sizeof(char) || sizeof(t) == sizeof(short) || \
            ^
   net/ipv4/tcp_input.c:5325:6: note: Left side of '||' is false
           if (RB_EMPTY_ROOT(&tp->out_of_order_queue))
               ^
   include/linux/rbtree.h:30:31: note: expanded from macro 'RB_EMPTY_ROOT'
   #define RB_EMPTY_ROOT(root)  (READ_ONCE((root)->rb_node) == NULL)
                                 ^
   include/asm-generic/rwonce.h:49:2: note: expanded from macro 'READ_ONCE'
           compiletime_assert_rwonce_type(x);                              \
           ^
   include/asm-generic/rwonce.h:36:21: note: expanded from macro 
'compiletime_assert_rwonce_type'
           compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long 
long),  \
                              ^
   include/linux/compiler_types.h:316:3: note: expanded from macro 
'__native_word'
           (sizeof(t) == sizeof(char) || sizeof(t) == sizeof(short) || \
            ^
   net/ipv4/tcp_input.c:5325:6: note: Left side of '||' is false
           if (RB_EMPTY_ROOT(&tp->out_of_order_queue))
               ^
   include/linux/rbtree.h:30:31: note: expanded from macro 'RB_EMPTY_ROOT'
   #define RB_EMPTY_ROOT(root)  (READ_ONCE((root)->rb_node) == NULL)
                                 ^
   include/asm-generic/rwonce.h:49:2: note: expanded from macro 'READ_ONCE'
           compiletime_assert_rwonce_type(x);                              \
           ^
   include/asm-generic/rwonce.h:36:21: note: expanded from macro 
'compiletime_assert_rwonce_type'
           compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long 
long),  \
                              ^
   include/linux/compiler_types.h:316:3: note: expanded from macro 
'__native_word'
           (sizeof(t) == sizeof(char) || sizeof(t) == sizeof(short) || \
            ^
   net/ipv4/tcp_input.c:5325:6: note: Left side of '||' is true
           if (RB_EMPTY_ROOT(&tp->out_of_order_queue))
               ^
   include/linux/rbtree.h:30:31: note: expanded from macro 'RB_EMPTY_ROOT'
   #define RB_EMPTY_ROOT(root)  (READ_ONCE((root)->rb_node) == NULL)
                                 ^
   include/asm-generic/rwonce.h:49:2: note: expanded from macro 'READ_ONCE'
           compiletime_assert_rwonce_type(x);                              \
           ^
   include/asm-generic/rwonce.h:36:38: note: expanded from macro 
'compiletime_assert_rwonce_type'
           compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long 
long),  \
                                               ^
   net/ipv4/tcp_input.c:5325:6: note: Taking false branch
           if (RB_EMPTY_ROOT(&tp->out_of_order_queue))
               ^
   include/linux/rbtree.h:30:31: note: expanded from macro 'RB_EMPTY_ROOT'
   #define RB_EMPTY_ROOT(root)  (READ_ONCE((root)->rb_node) == NULL)
                                 ^
   include/asm-generic/rwonce.h:49:2: note: expanded from macro 'READ_ONCE'
           compiletime_assert_rwonce_type(x);                              \
           ^
   include/asm-generic/rwonce.h:36:2: note: expanded from macro 
'compiletime_assert_rwonce_type'
           compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long 
long),  \
           ^
   include/linux/compiler_types.h:349:2: note: expanded from macro 
'compiletime_assert'
           _compiletime_assert(condition, msg, __compiletime_assert_, 
__COUNTER__)
           ^
   include/linux/compiler_types.h:337:2: note: expanded from macro 
'_compiletime_assert'
           __compiletime_assert(condition, msg, prefix, suffix)
           ^
   include/linux/compiler_types.h:329:3: note: expanded from macro 
'__compiletime_assert'
                   if (!(condition))                                       \
                   ^
   net/ipv4/tcp_input.c:5325:6: note: Loop condition is false.  Exiting loop
           if (RB_EMPTY_ROOT(&tp->out_of_order_queue))
               ^
   include/linux/rbtree.h:30:31: note: expanded from macro 'RB_EMPTY_ROOT'
   #define RB_EMPTY_ROOT(root)  (READ_ONCE((root)->rb_node) == NULL)
                                 ^
   include/asm-generic/rwonce.h:49:2: note: expanded from macro 'READ_ONCE'
           compiletime_assert_rwonce_type(x);                              \

vim +/reason +5010 net/ipv4/tcp_input.c

03f45c883c6f391 Eric Dumazet             2018-04-16  4987  
^1da177e4c3f415 Linus Torvalds           2005-04-16  4988  static void 
tcp_data_queue(struct sock *sk, struct sk_buff *skb)
^1da177e4c3f415 Linus Torvalds           2005-04-16  4989  {
^1da177e4c3f415 Linus Torvalds           2005-04-16  4990       struct tcp_sock 
*tp = tcp_sk(sk);
a7ec381049c0d1f Menglong Dong            2022-02-20  4991       enum 
skb_drop_reason reason;
5357f0bd4edf0b3 Eric Dumazet             2017-08-01  4992       bool fragstolen;
5357f0bd4edf0b3 Eric Dumazet             2017-08-01  4993       int eaten;
^1da177e4c3f415 Linus Torvalds           2005-04-16  4994  
6787b7e350d3552 Jianguo Wu               2021-07-09  4995       /* If a subflow 
has been reset, the packet should not continue
6787b7e350d3552 Jianguo Wu               2021-07-09  4996        * to be 
processed, drop the packet.
6787b7e350d3552 Jianguo Wu               2021-07-09  4997        */
6787b7e350d3552 Jianguo Wu               2021-07-09  4998       if 
(sk_is_mptcp(sk) && !mptcp_incoming_options(sk, skb)) {
6787b7e350d3552 Jianguo Wu               2021-07-09  4999               
__kfree_skb(skb);
6787b7e350d3552 Jianguo Wu               2021-07-09  5000               return;
6787b7e350d3552 Jianguo Wu               2021-07-09  5001       }
648ef4b88673dad Mat Martineau            2020-01-21  5002  
532182cd610782d Eric Dumazet             2016-04-01  5003       if 
(TCP_SKB_CB(skb)->seq == TCP_SKB_CB(skb)->end_seq) {
532182cd610782d Eric Dumazet             2016-04-01  5004               
__kfree_skb(skb);
532182cd610782d Eric Dumazet             2016-04-01  5005               return;
532182cd610782d Eric Dumazet             2016-04-01  5006       }
f84af32cbca70a3 Eric Dumazet             2010-04-28  5007       
skb_dst_drop(skb);
155c6e1ad4a778c Peter Pan(潘卫平         2014-09-24  5008)         __skb_pull(skb, 
tcp_hdr(skb)->doff * 4);
^1da177e4c3f415 Linus Torvalds           2005-04-16  5009  
a7ec381049c0d1f Menglong Dong            2022-02-20 @5010       reason = 
SKB_DROP_REASON_NOT_SPECIFIED;
^1da177e4c3f415 Linus Torvalds           2005-04-16  5011       
tp->rx_opt.dsack = 0;
^1da177e4c3f415 Linus Torvalds           2005-04-16  5012  
^1da177e4c3f415 Linus Torvalds           2005-04-16  5013       /*  Queue data 
for delivery to the user.
^1da177e4c3f415 Linus Torvalds           2005-04-16  5014        *  Packets in 
sequence go to the receive queue.
^1da177e4c3f415 Linus Torvalds           2005-04-16  5015        *  Out of 
sequence packets to the out_of_order_queue.
^1da177e4c3f415 Linus Torvalds           2005-04-16  5016        */
^1da177e4c3f415 Linus Torvalds           2005-04-16  5017       if 
(TCP_SKB_CB(skb)->seq == tp->rcv_nxt) {
fb223502ec08894 Yafang Shao              2018-06-24  5018               if 
(tcp_receive_window(tp) == 0) {
a7ec381049c0d1f Menglong Dong            2022-02-20  5019                       
reason = SKB_DROP_REASON_TCP_ZEROWINDOW;
fb223502ec08894 Yafang Shao              2018-06-24  5020                       
NET_INC_STATS(sock_net(sk), LINUX_MIB_TCPZEROWINDOWDROP);
^1da177e4c3f415 Linus Torvalds           2005-04-16  5021                       
goto out_of_window;
fb223502ec08894 Yafang Shao              2018-06-24  5022               }
^1da177e4c3f415 Linus Torvalds           2005-04-16  5023  
^1da177e4c3f415 Linus Torvalds           2005-04-16  5024               /* Ok. 
In sequence. In window. */
^1da177e4c3f415 Linus Torvalds           2005-04-16  5025  queue_and_out:
76dfa6082032b5c Eric Dumazet             2015-05-15  5026               if 
(skb_queue_len(&sk->sk_receive_queue) == 0)
76dfa6082032b5c Eric Dumazet             2015-05-15  5027                       
sk_forced_mem_schedule(sk, skb->truesize);
ea5d0c32498e1a0 Yafang Shao              2018-06-28  5028               else if 
(tcp_try_rmem_schedule(sk, skb, skb->truesize)) {
a7ec381049c0d1f Menglong Dong            2022-02-20  5029                       
reason = SKB_DROP_REASON_PROTO_MEM;
ea5d0c32498e1a0 Yafang Shao              2018-06-28  5030                       
NET_INC_STATS(sock_net(sk), LINUX_MIB_TCPRCVQDROP);
ba3bb0e76ccd464 Eric Dumazet             2020-06-30  5031                       
sk->sk_data_ready(sk);
^1da177e4c3f415 Linus Torvalds           2005-04-16  5032                       
goto drop;
ea5d0c32498e1a0 Yafang Shao              2018-06-28  5033               }
5357f0bd4edf0b3 Eric Dumazet             2017-08-01  5034  
e7395f1f4ba24dc Eric Dumazet             2018-11-26  5035               eaten = 
tcp_queue_rcv(sk, skb, &fragstolen);
^1da177e4c3f415 Linus Torvalds           2005-04-16  5036               if 
(skb->len)
9e412ba7632f712 Ilpo Järvinen            2007-04-20  5037                       
tcp_event_data_recv(sk, skb);
155c6e1ad4a778c Peter Pan(潘卫平         2014-09-24  5038)                 if 
(TCP_SKB_CB(skb)->tcp_flags & TCPHDR_FIN)
20c4cb792de2b58 Eric Dumazet             2011-10-20  5039                       
tcp_fin(sk);
^1da177e4c3f415 Linus Torvalds           2005-04-16  5040  
9f5afeae51526b3 Yaogong Wang             2016-09-07  5041               if 
(!RB_EMPTY_ROOT(&tp->out_of_order_queue)) {
^1da177e4c3f415 Linus Torvalds           2005-04-16  5042                       
tcp_ofo_queue(sk);
^1da177e4c3f415 Linus Torvalds           2005-04-16  5043  
15bdd5686c2c613 Yuchung Cheng            2018-08-09  5044                       
/* RFC5681. 4.2. SHOULD send immediate ACK, when
^1da177e4c3f415 Linus Torvalds           2005-04-16  5045                       
 * gap in queue is filled.
^1da177e4c3f415 Linus Torvalds           2005-04-16  5046                       
 */
9f5afeae51526b3 Yaogong Wang             2016-09-07  5047                       
if (RB_EMPTY_ROOT(&tp->out_of_order_queue))
15bdd5686c2c613 Yuchung Cheng            2018-08-09  5048                       
        inet_csk(sk)->icsk_ack.pending |= ICSK_ACK_NOW;
^1da177e4c3f415 Linus Torvalds           2005-04-16  5049               }
^1da177e4c3f415 Linus Torvalds           2005-04-16  5050  
^1da177e4c3f415 Linus Torvalds           2005-04-16  5051               if 
(tp->rx_opt.num_sacks)
^1da177e4c3f415 Linus Torvalds           2005-04-16  5052                       
tcp_sack_remove(tp);
^1da177e4c3f415 Linus Torvalds           2005-04-16  5053  
31770e34e43d6c8 Florian Westphal         2017-08-30  5054               
tcp_fast_path_check(sk);
31770e34e43d6c8 Florian Westphal         2017-08-30  5055  
923dd347b8904c2 Eric Dumazet             2012-05-02  5056               if 
(eaten > 0)
923dd347b8904c2 Eric Dumazet             2012-05-02  5057                       
kfree_skb_partial(skb, fragstolen);
1d57f19539c0741 Eric Dumazet             2012-09-17  5058               if 
(!sock_flag(sk, SOCK_DEAD))
03f45c883c6f391 Eric Dumazet             2018-04-16  5059                       
tcp_data_ready(sk);
^1da177e4c3f415 Linus Torvalds           2005-04-16  5060               return;
^1da177e4c3f415 Linus Torvalds           2005-04-16  5061       }
^1da177e4c3f415 Linus Torvalds           2005-04-16  5062  
^1da177e4c3f415 Linus Torvalds           2005-04-16  5063       if 
(!after(TCP_SKB_CB(skb)->end_seq, tp->rcv_nxt)) {
7788174e8726c30 Yuchung Cheng            2018-08-29  5064               
tcp_rcv_spurious_retrans(sk, skb);
^1da177e4c3f415 Linus Torvalds           2005-04-16  5065               /* A 
retransmit, 2nd most common case.  Force an immediate ack. */
a7ec381049c0d1f Menglong Dong            2022-02-20  5066               reason 
= SKB_DROP_REASON_TCP_OLD_DATA;
c10d9310edf5aa4 Eric Dumazet             2016-04-29  5067               
NET_INC_STATS(sock_net(sk), LINUX_MIB_DELAYEDACKLOST);
1ed834655a0d42e Pavel Emelyanov          2008-07-16  5068               
tcp_dsack_set(sk, TCP_SKB_CB(skb)->seq, TCP_SKB_CB(skb)->end_seq);
^1da177e4c3f415 Linus Torvalds           2005-04-16  5069  
^1da177e4c3f415 Linus Torvalds           2005-04-16  5070  out_of_window:
9a9c9b51e546188 Eric Dumazet             2018-05-21  5071               
tcp_enter_quickack_mode(sk, TCP_MAX_QUICKACKS);
463c84b97f24010 Arnaldo Carvalho de Melo 2005-08-09  5072               
inet_csk_schedule_ack(sk);
^1da177e4c3f415 Linus Torvalds           2005-04-16  5073  drop:
a7ec381049c0d1f Menglong Dong            2022-02-20  5074               
tcp_drop_reason(sk, skb, reason);
^1da177e4c3f415 Linus Torvalds           2005-04-16  5075               return;
^1da177e4c3f415 Linus Torvalds           2005-04-16  5076       }
^1da177e4c3f415 Linus Torvalds           2005-04-16  5077  
^1da177e4c3f415 Linus Torvalds           2005-04-16  5078       /* Out of 
window. F.e. zero window probe. */
a7ec381049c0d1f Menglong Dong            2022-02-20  5079       if 
(!before(TCP_SKB_CB(skb)->seq,
a7ec381049c0d1f Menglong Dong            2022-02-20  5080                   
tp->rcv_nxt + tcp_receive_window(tp))) {
a7ec381049c0d1f Menglong Dong            2022-02-20  5081               reason 
= SKB_DROP_REASON_TCP_OVERWINDOW;
^1da177e4c3f415 Linus Torvalds           2005-04-16  5082               goto 
out_of_window;
a7ec381049c0d1f Menglong Dong            2022-02-20  5083       }
^1da177e4c3f415 Linus Torvalds           2005-04-16  5084  
^1da177e4c3f415 Linus Torvalds           2005-04-16  5085       if 
(before(TCP_SKB_CB(skb)->seq, tp->rcv_nxt)) {
^1da177e4c3f415 Linus Torvalds           2005-04-16  5086               /* 
Partial packet, seq < rcv_next < end_seq */
1ed834655a0d42e Pavel Emelyanov          2008-07-16  5087               
tcp_dsack_set(sk, TCP_SKB_CB(skb)->seq, tp->rcv_nxt);
^1da177e4c3f415 Linus Torvalds           2005-04-16  5088  
^1da177e4c3f415 Linus Torvalds           2005-04-16  5089               /* If 
window is closed, drop tail of packet. But after
^1da177e4c3f415 Linus Torvalds           2005-04-16  5090                * 
remembering D-SACK for its head made in previous line.
^1da177e4c3f415 Linus Torvalds           2005-04-16  5091                */
fb223502ec08894 Yafang Shao              2018-06-24  5092               if 
(!tcp_receive_window(tp)) {
a7ec381049c0d1f Menglong Dong            2022-02-20  5093                       
reason = SKB_DROP_REASON_TCP_ZEROWINDOW;
fb223502ec08894 Yafang Shao              2018-06-24  5094                       
NET_INC_STATS(sock_net(sk), LINUX_MIB_TCPZEROWINDOWDROP);
^1da177e4c3f415 Linus Torvalds           2005-04-16  5095                       
goto out_of_window;
fb223502ec08894 Yafang Shao              2018-06-24  5096               }
^1da177e4c3f415 Linus Torvalds           2005-04-16  5097               goto 
queue_and_out;
^1da177e4c3f415 Linus Torvalds           2005-04-16  5098       }
^1da177e4c3f415 Linus Torvalds           2005-04-16  5099  
e86b291962cbf47 Eric Dumazet             2012-03-18  5100       
tcp_data_queue_ofo(sk, skb);
^1da177e4c3f415 Linus Torvalds           2005-04-16  5101  }
^1da177e4c3f415 Linus Torvalds           2005-04-16  5102  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/[email protected]
_______________________________________________
kbuild mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to