Hi Ricardo,

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: i386-randconfig-m021-20201022 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-15) 9.3.0

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

smatch warnings:
net/ipv4/inet_hashtables.c:570 inet_ehash_insert_chk_dup() error: uninitialized 
symbol 'dif'.

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

35d7202175fe2c3 Ricardo Dias 2020-10-23  544  struct sock 
*inet_ehash_insert_chk_dup(struct sock *sk)
35d7202175fe2c3 Ricardo Dias 2020-10-23  545  {
35d7202175fe2c3 Ricardo Dias 2020-10-23  546    struct inet_hashinfo *hashinfo 
= sk->sk_prot->h.hashinfo;
35d7202175fe2c3 Ricardo Dias 2020-10-23  547    struct hlist_nulls_head *list;
35d7202175fe2c3 Ricardo Dias 2020-10-23  548    struct inet_ehash_bucket *head;
35d7202175fe2c3 Ricardo Dias 2020-10-23  549    const struct hlist_nulls_node 
*node;
35d7202175fe2c3 Ricardo Dias 2020-10-23  550    struct sock *esk;
35d7202175fe2c3 Ricardo Dias 2020-10-23  551    spinlock_t *lock; /* protects 
hashinfo socket entry */
35d7202175fe2c3 Ricardo Dias 2020-10-23  552    struct net *net = sock_net(sk);
35d7202175fe2c3 Ricardo Dias 2020-10-23  553    const int dif, sdif = 
sk->sk_bound_dev_if;
                                                      ^^^^^^^
"dif" is never initialized.

35d7202175fe2c3 Ricardo Dias 2020-10-23  554  
35d7202175fe2c3 Ricardo Dias 2020-10-23  555    INET_ADDR_COOKIE(acookie, 
sk->sk_daddr, sk->sk_rcv_saddr);
35d7202175fe2c3 Ricardo Dias 2020-10-23  556    const __portpair ports = 
INET_COMBINED_PORTS(sk->sk_dport, sk->sk_num);
35d7202175fe2c3 Ricardo Dias 2020-10-23  557  
35d7202175fe2c3 Ricardo Dias 2020-10-23  558    WARN_ON_ONCE(!sk_unhashed(sk));
35d7202175fe2c3 Ricardo Dias 2020-10-23  559  
35d7202175fe2c3 Ricardo Dias 2020-10-23  560    sk->sk_hash = sk_ehashfn(sk);
35d7202175fe2c3 Ricardo Dias 2020-10-23  561    head = 
inet_ehash_bucket(hashinfo, sk->sk_hash);
35d7202175fe2c3 Ricardo Dias 2020-10-23  562    list = &head->chain;
35d7202175fe2c3 Ricardo Dias 2020-10-23  563    lock = 
inet_ehash_lockp(hashinfo, sk->sk_hash);
35d7202175fe2c3 Ricardo Dias 2020-10-23  564  
35d7202175fe2c3 Ricardo Dias 2020-10-23  565    spin_lock(lock);
35d7202175fe2c3 Ricardo Dias 2020-10-23  566  begin:
35d7202175fe2c3 Ricardo Dias 2020-10-23  567    sk_nulls_for_each_rcu(esk, 
node, list) {
35d7202175fe2c3 Ricardo Dias 2020-10-23  568            if (esk->sk_hash != 
sk->sk_hash)
35d7202175fe2c3 Ricardo Dias 2020-10-23  569                    continue;
35d7202175fe2c3 Ricardo Dias 2020-10-23 @570            if 
(likely(INET_MATCH(esk, net, acookie,
35d7202175fe2c3 Ricardo Dias 2020-10-23  571                                  
sk->sk_daddr, sk->sk_rcv_saddr, ports,
35d7202175fe2c3 Ricardo Dias 2020-10-23  572                                  
dif, sdif))) {
                                                                              
^^^
warning.

35d7202175fe2c3 Ricardo Dias 2020-10-23  573                    if 
(unlikely(!refcount_inc_not_zero(&esk->sk_refcnt)))
35d7202175fe2c3 Ricardo Dias 2020-10-23  574                            goto 
out;
35d7202175fe2c3 Ricardo Dias 2020-10-23  575                    if 
(unlikely(!INET_MATCH(esk, net, acookie,
35d7202175fe2c3 Ricardo Dias 2020-10-23  576                                    
         sk->sk_daddr,
35d7202175fe2c3 Ricardo Dias 2020-10-23  577                                    
         sk->sk_rcv_saddr, ports,
35d7202175fe2c3 Ricardo Dias 2020-10-23  578                                    
         dif, sdif))) {
35d7202175fe2c3 Ricardo Dias 2020-10-23  579                            
sock_gen_put(esk);
35d7202175fe2c3 Ricardo Dias 2020-10-23  580                            goto 
begin;
35d7202175fe2c3 Ricardo Dias 2020-10-23  581                    }
35d7202175fe2c3 Ricardo Dias 2020-10-23  582                    goto found;
35d7202175fe2c3 Ricardo Dias 2020-10-23  583            }
35d7202175fe2c3 Ricardo Dias 2020-10-23  584    }
35d7202175fe2c3 Ricardo Dias 2020-10-23  585  out:
35d7202175fe2c3 Ricardo Dias 2020-10-23  586    esk = NULL;
35d7202175fe2c3 Ricardo Dias 2020-10-23  587    __sk_nulls_add_node_rcu(sk, 
list);
35d7202175fe2c3 Ricardo Dias 2020-10-23  588  found:
35d7202175fe2c3 Ricardo Dias 2020-10-23  589    spin_unlock(lock);
35d7202175fe2c3 Ricardo Dias 2020-10-23  590    if (esk) {
35d7202175fe2c3 Ricardo Dias 2020-10-23  591            
percpu_counter_inc(sk->sk_prot->orphan_count);
35d7202175fe2c3 Ricardo Dias 2020-10-23  592            inet_sk_set_state(sk, 
TCP_CLOSE);
35d7202175fe2c3 Ricardo Dias 2020-10-23  593            sock_set_flag(sk, 
SOCK_DEAD);
35d7202175fe2c3 Ricardo Dias 2020-10-23  594            
inet_csk_destroy_sock(sk);
35d7202175fe2c3 Ricardo Dias 2020-10-23  595    }
35d7202175fe2c3 Ricardo Dias 2020-10-23  596    return esk;
35d7202175fe2c3 Ricardo Dias 2020-10-23  597  }

---
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