Hi Ricardo,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on net-next/master]
[also build test WARNING on net/master linus/master v5.9 next-20201023]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    
https://github.com/0day-ci/linux/commits/Ricardo-Dias/tcp-fix-race-condition-when-creating-child-sockets-from-syncookies/20201023-191433
base:   https://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git 
105faa8742437c28815b2a3eb8314ebc5fd9288c
config: arm-randconfig-r023-20201022 (attached as .config)
compiler: clang version 12.0.0 (https://github.com/llvm/llvm-project 
147b9497e79a98a8614b2b5eb4ba653b44f6b6f0)
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
        # install arm cross compiling tool for clang build
        # apt-get install binutils-arm-linux-gnueabi
        # 
https://github.com/0day-ci/linux/commit/35d7202175fe2c313d66daf214ea113947d78c6d
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review 
Ricardo-Dias/tcp-fix-race-condition-when-creating-child-sockets-from-syncookies/20201023-191433
        git checkout 35d7202175fe2c313d66daf214ea113947d78c6d
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=arm 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <l...@intel.com>

All warnings (new ones prefixed by >>):

>> net/ipv4/inet_hashtables.c:572:11: warning: variable 'dif' is uninitialized 
>> when used here [-Wuninitialized]
                                         dif, sdif))) {
                                         ^~~
   include/net/inet_hashtables.h:318:33: note: expanded from macro 'INET_MATCH'
            (((__sk)->sk_bound_dev_if == (__dif))          ||              \
                                          ^~~~~
   include/linux/compiler.h:77:40: note: expanded from macro 'likely'
   # define likely(x)      __builtin_expect(!!(x), 1)
                                               ^
   net/ipv4/inet_hashtables.c:553:15: note: initialize the variable 'dif' to 
silence this warning
           const int dif, sdif = sk->sk_bound_dev_if;
                        ^
                         = 0
   1 warning generated.

vim +/dif +572 net/ipv4/inet_hashtables.c

   539  
   540  /* Inserts a socket into ehash if no existing socket exists for the same
   541   * quadruple (saddr, sport, daddr, dport).
   542   * If there is an existing socket, returns that socket, otherwise 
returns NULL.
   543   */
   544  struct sock *inet_ehash_insert_chk_dup(struct sock *sk)
   545  {
   546          struct inet_hashinfo *hashinfo = sk->sk_prot->h.hashinfo;
   547          struct hlist_nulls_head *list;
   548          struct inet_ehash_bucket *head;
   549          const struct hlist_nulls_node *node;
   550          struct sock *esk;
   551          spinlock_t *lock; /* protects hashinfo socket entry */
   552          struct net *net = sock_net(sk);
   553          const int dif, sdif = sk->sk_bound_dev_if;
   554  
   555          INET_ADDR_COOKIE(acookie, sk->sk_daddr, sk->sk_rcv_saddr);
   556          const __portpair ports = INET_COMBINED_PORTS(sk->sk_dport, 
sk->sk_num);
   557  
   558          WARN_ON_ONCE(!sk_unhashed(sk));
   559  
   560          sk->sk_hash = sk_ehashfn(sk);
   561          head = inet_ehash_bucket(hashinfo, sk->sk_hash);
   562          list = &head->chain;
   563          lock = inet_ehash_lockp(hashinfo, sk->sk_hash);
   564  
   565          spin_lock(lock);
   566  begin:
   567          sk_nulls_for_each_rcu(esk, node, list) {
   568                  if (esk->sk_hash != sk->sk_hash)
   569                          continue;
   570                  if (likely(INET_MATCH(esk, net, acookie,
   571                                        sk->sk_daddr, sk->sk_rcv_saddr, 
ports,
 > 572                                        dif, sdif))) {
   573                          if 
(unlikely(!refcount_inc_not_zero(&esk->sk_refcnt)))
   574                                  goto out;
   575                          if (unlikely(!INET_MATCH(esk, net, acookie,
   576                                                   sk->sk_daddr,
   577                                                   sk->sk_rcv_saddr, 
ports,
   578                                                   dif, sdif))) {
   579                                  sock_gen_put(esk);
   580                                  goto begin;
   581                          }
   582                          goto found;
   583                  }
   584          }
   585  out:
   586          esk = NULL;
   587          __sk_nulls_add_node_rcu(sk, list);
   588  found:
   589          spin_unlock(lock);
   590          if (esk) {
   591                  percpu_counter_inc(sk->sk_prot->orphan_count);
   592                  inet_sk_set_state(sk, TCP_CLOSE);
   593                  sock_set_flag(sk, SOCK_DEAD);
   594                  inet_csk_destroy_sock(sk);
   595          }
   596          return esk;
   597  }
   598  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-...@lists.01.org

Attachment: .config.gz
Description: application/gzip

Reply via email to